home *** CD-ROM | disk | FTP | other *** search
/ Chaos CD Blue / Chaos_CD_Blue__[1999].iso / contrib / cryptron / Diplom_original / isdntel1.asm < prev   
Assembly Source File  |  1999-11-21  |  55KB  |  2,868 lines

  1.  
  2. DPL1        EQU    084h    ; DS80C320
  3. DPH1        EQU    085h    ; DS80C320
  4. DPS        EQU    086h    ; DS80C320
  5. CKCON        EQU    08Eh    ; DS80C320
  6. EXIF        EQU    091h    ; DS80C320
  7. SCON1        EQU    0C0h    ; DS80C320
  8. SBUF1        EQU    0C1h    ; DS80C320
  9. TA        EQU    0C7h    ; DS80C320
  10. WDCON        EQU    0D8h    ; DS80C320
  11. EIE        EQU    0E8h    ; DS80C320
  12. EIP        EQU    0F8h    ; DS80C320
  13.  
  14. dc_status    EQU    020h
  15.  
  16. dc_ir        EQU    028h
  17. dc_dsr1        EQU    029h
  18. dc_dsr2        EQU    02Ah
  19. dc_der        EQU    02Bh
  20. dc_lsr        EQU    02Ch
  21. dc_d2_rec_typ    EQU    02Dh
  22.  
  23. kyb_data_p_irq    EQU    030h    ; Tasten-Code
  24. kyb_data_p_main    EQU    031h    ; Tasten-Code
  25.  
  26. period_timer    EQU    034h
  27. period_min    EQU    035h
  28. rtc_cal        EQU    036h
  29.  
  30. dc_d2_tei    EQU    040h
  31. dc_d2_ns    EQU    041h
  32. dc_d2_nr    EQU    042h
  33. dc_d3_cr    EQU    048h
  34. dc_bc_nr    EQU    04Ch
  35.  
  36. dc_trans_buf_l    EQU    068h
  37. dc_trans_buf_p    EQU    069h
  38. dc_reciv_buf_l    EQU    06Ah
  39. dc_reciv_buf_p    EQU    06Bh
  40.  
  41. menu_back_h    EQU    070h
  42. menu_back_l    EQU    071h
  43.  
  44. input_buffer_p    EQU    07Fh
  45.  
  46. input_buffer    EQU    080h    ; Eingabe Buffer        020h Bytes
  47.  
  48. menu_start_adr    EQU    0A0h    ; Start Addresse Menu Tasten    010h Bytes
  49.  
  50. kyb_data_buffer    EQU    0B0h    ; Tasten-Code
  51.  
  52. stack_init    EQU    0BFh    ; STACK                040h Bytes
  53.  
  54. ; -----------------------------------------------------------------------------
  55.  
  56. input_buf_max    EQU    014h
  57.  
  58.  
  59. X_Dc_Trans_Buf    EQU    01000h    ; D-Chanel Transmit Buffer    4 * 0FFh Bytes
  60. X_Dc_Reciv_Buf    EQU    02000h    ; D-Chanel Reciece Buffer    4 * 0FFh Bytes
  61. Dc_buffer_max    EQU    0FFh
  62.  
  63.  
  64. X_RTC_Ctrl    EQU    09FF8h
  65. X_RTC_Sec    EQU    09FF9h
  66. X_RTC_Min    EQU    09FFAh
  67. X_RTC_Hour    EQU    09FFBh
  68. X_RTC_Day    EQU    09FFCh
  69. X_RTC_Date    EQU    09FFDh
  70. X_RTC_Month    EQU    09FFEh
  71. X_RTC_Year    EQU    09FFFh
  72.  
  73. X_LCD_Ctrl    EQU    0A000h
  74. X_LCD_Data    EQU    0A001h
  75.  
  76. X_KYB        EQU    0C000h
  77.  
  78. X_DSC_CrIr    EQU    0E000h
  79. X_DSC_Data    EQU    0E001h
  80. X_DSC_dsr1    EQU    0E002h
  81. X_DSC_der    EQU    0E003h
  82. X_DSC_DCB    EQU    0E004h
  83. X_DSC_BbB    EQU    0E005h
  84. X_DSC_BcB    EQU    0E006h
  85. X_DSC_dsr2    EQU    0E007h
  86.  
  87. R_DSC_CrIr    EQU    000h    ; Command / Intrrupt    R/W
  88. R_DSC_Data    EQU    001h    ; Data            R/W
  89. R_DSC_dsr1    EQU    002h    ; Dc Status Reg. Nr1    R   1
  90. R_DSC_der    EQU    003h    ; Dc Error Reg.        R   2
  91. R_DSC_DCB    EQU    004h    ; Dc Data        R/W 8/16/32
  92. R_DSC_BbB    EQU    005h    ; Bb Data        R/W 1
  93. R_DSC_BcB    EQU    006h    ; Bc Data        R/W 1
  94. R_DSC_dsr2    EQU    007h    ; Dc Status Reg. Nr2    R
  95.  
  96.  
  97. DSCi_init     EQU     021h    ; Init Reg.        R/W 1
  98. DSCi_init2    EQU     020h    ; Init Reg. Nr2        R/W 1
  99.  
  100. DSCi_lsr      EQU     0A1h    ; LIU Status Reg.    R   1
  101. DSCi_lpr    EQU     0A2h    ; LIU Priority Reg.    R/W 1
  102. DSCi_lmr1         EQU     0A3h    ; LIU Mode Reg. Nr1    R/W 1
  103. DSCi_lmr2    EQU     0A4h    ; LIU Mode Reg. Nr2    R/W 1
  104. DSCi_mf        EQU     0A6h    ; LIU MultiFrame Reg.    R/W 1
  105. DSCi_mfsb    EQU     0A7h    ; LIU S-Bit Status Reg.    R   1
  106. DSCi_mfqb    EQU     0A8h    ; LIU Q-Bit Buffer    W   1
  107.  
  108. DSCi_mcr1    EQU     041h    ; MUX Control Reg. Nr1    R/W 1
  109. DSCi_mcr2    EQU     042h    ; MUX Control Reg. Nr2    R/W 1
  110. DSCi_mcr3    EQU     043h    ; MUX Control Reg. Nr3    R/W 1
  111. DSCi_mcr4    EQU     044h    ; MUX Control Reg. Nr4    R/W 1
  112.  
  113. DSCi_xcoef    EQU     061h    ; MAP X-Filter Coef.    R/W 8
  114. DSCi_rcoef    EQU     062h    ; MAP R-Filter Coef.    R/W 8
  115. DSCi_gxcoef    EQU     063h    ; MAP GX Gain Coef.    R/W 2
  116. DSCi_grcoef    EQU     064h    ; MAP GR Gain Coef.    R/W 2
  117. DSCi_gercoef    EQU     065h    ; MAP GER Gain Coef.    R/W 2
  118. DSCi_stgcoef    EQU     066h    ; MAP Sidetone Gain    R/W 2
  119. DSCi_ftgr    EQU     067h    ; MAP Freq. Tone Gen.    R/W 2
  120. DSCi_atgr    EQU     068h    ; MAP Ampl. Tone Gen.    R/W 2
  121. DSCi_mmr1    EQU     069h    ; MAP Mode Reg. Nr1    R/W 1
  122. DSCi_mmr2    EQU     06Ah    ; MAP Mode Reg. Nr2    R/W 1
  123. DSCi_mmr3    EQU     06Ch    ; MAP Mode Reg. Nr3    R/W 1
  124. DSCi_stra    EQU     06Dh    ; MAP Sec. Tone Ampl.    R/W 1
  125. DSCi_strf    EQU     06Eh    ; MAP Sec. Tone Freq.    R/W 1
  126. DSCi_peakx    EQU     070h    ; MAP Trans Peak Reg.    R   1
  127. DSCi_peakr    EQU     071h    ; MAP Reciv Peak Reg.    R   1
  128.  
  129. DSCi_frar    EQU     081h    ; DLC First Reciv Adr    R/W 3
  130. DSCi_srar    EQU     082h    ; DLC Sec. Reciv Adr    R/W 3
  131. DSCi_tar    EQU     083h    ; DLC Trans Addr Reg.    R/W 2
  132. DSCi_drlr    EQU     084h    ; DLC Dc Reciv Limit    R/W 2
  133. DSCi_dtcr    EQU     085h    ; DLC Dc Trans Count    R/W 2
  134. DSCi_dmr1    EQU     086h    ; DLC Mode Reg. Nr 1    R/W 1
  135. DSCi_dmr2    EQU     087h    ; DLC Mode Reg. Nr 2    R/W 2
  136. DSCi_drcr    EQU     089h    ; DLC Dc Reciv Count    R   2
  137. DSCi_rngr1    EQU     08Ah    ; DLC Random Gen. Nr1    R/W 1
  138. DSCi_rngr2    EQU     08Bh    ; DLC Random Gen. Nr2    R/W 1
  139. DSCi_frar4    EQU     08Ch    ; DLC First Reciv Adr4    R/W 1
  140. DSCi_srar4    EQU     08Dh    ; DLC Sec. Reciv Adr4    R/W 1
  141. DSCi_dmr3    EQU     08Eh    ; DLC Mode Reg. Nr 3    R/W 1
  142. DSCi_dmr4    EQU     08Fh    ; DLC Mode Reg. Nr 4    R/W 1
  143. DSCi_asr    EQU     091h    ; DLC Adr Status Reg.    R   1
  144. DSCi_efcr    EQU     092h    ; DLC Ext. FIFO Ctrl.    R/W 1
  145.  
  146. DSCi_ppcr1    EQU     0C0h    ; PP  Ctrl. Reg. Nr1    R/W 1
  147. DSCi_ppsr    EQU     0C1h    ; PP  Status Reg.    R   1
  148. DSCi_ppier    EQU     0C2h    ; PP  Irq Enable Reg.    R/W 1
  149. DSCi_mdr    EQU     0C3h    ; PP  Monitor Data    R/W 1
  150. DSCi_cidr0    EQU     0C4h    ; PP  C/I Data 0    R/W 1
  151. DSCi_cidr1    EQU     0C5h    ; PP  C/I Data 1    R/W 1
  152. DSCi_ppcr2    EQU     0C8h    ; PP  Ctrl. Reg. Nr2    R/W 1
  153. DSCi_ppcr3    EQU     0C9h    ; PP  Ctrl. Reg. Nr3    R/W 1
  154.  
  155.  
  156. ; -----------------------------------------------------------------------------
  157.  
  158.             ORG    00000h    ; RESET
  159.             JMP    start
  160.  
  161.             ORG    00003h    ; IRQ Extern0
  162.             LJMP    irq_isdn
  163.  
  164.             ORG    0000Bh    ; IRQ Timer0
  165.             RETI
  166.  
  167.             ORG    00013h    ; IRQ Extern1
  168.             LJMP    irq_kyb
  169.  
  170.             ORG    0001Bh    ; IRQ Timer1
  171.             RETI
  172.  
  173.             ORG    00023h    ; IRQ Serial0
  174.             RETI
  175.  
  176.             ORG    0002Bh    ; IRQ Timer2
  177.             RETI
  178.  
  179.             ORG    00033h    ; IRQ Power Fail
  180.             RETI
  181.  
  182.             ORG    0003Bh    ; IRQ Serial1
  183.             RETI
  184.  
  185.             ORG    00043h    ; IRQ Extern2
  186.             RETI
  187.  
  188.             ORG    0004Bh    ; IRQ Extern3
  189.             RETI
  190.  
  191.             ORG    00053h    ; IRQ Extern4
  192.             RETI
  193.  
  194.             ORG    0005Bh    ; IRQ Extern5
  195.             RETI
  196.  
  197.             ORG    00063h    ; IRQ Watchdog
  198.             LJMP    irq_period
  199.  
  200. ; -----------------------------------------------------------------------------
  201.  
  202.             ORG    00070h
  203.  
  204. stack_error:        MOV    A, #001h
  205.             CALL    lcd_wr_ctrl
  206.             MOV    DPTR, #txt_stack_error
  207.             CALL    lcd_str
  208.  
  209.             SJMP    $
  210.  
  211. ; -----------------------------------------------------------------------------
  212.  
  213.             ORG    00080h
  214.  
  215. start:            MOV    SP, #stack_init
  216.  
  217.             MOV    R0, #000h
  218.             CLR    A
  219. mem_clr:        MOV    @R0, A
  220.             INC    R0
  221.             CJNE    R0, #080h, mem_clr
  222.  
  223.             CALL    cpu_init
  224.             CALL    lcd_init
  225.             CALL    inp_buf_init
  226.             CALL    menu_init
  227.             CALL    dsc_init
  228.  
  229.             MOV    kyb_data_p_main, #000h
  230.             MOV    kyb_data_p_irq, #000h
  231.  
  232. main_0:            MOV    A, SP
  233.             CJNE    A, #stack_init, stack_error
  234.  
  235. main_1:            MOV    A, kyb_data_p_main
  236.             CJNE    A, kyb_data_p_irq, main_2
  237.             SJMP    main_1
  238. main_2:            MOV    R0, A
  239.             INC    A
  240.             ANL    A, #007h
  241.             MOV    kyb_data_p_main, A
  242.             MOV    A, R0
  243.             ADD    A, #kyb_data_buffer
  244.             MOV    R0, A
  245.             MOV    A, @R0
  246.  
  247.             CJNE    A, #000h, main_3
  248.             SJMP    main_0
  249.  
  250. main_3:            JNB    ACC.6, main_4
  251.             JB    ACC.5, main_5
  252.  
  253.             MOV    DPS, #000h        ; Gross Buchstabe
  254.             DEC    A
  255.             ANL    A, #007h
  256.             RL    A
  257.             ADD    A, #menu_start_adr
  258.             MOV    R0, A
  259.             MOV    A, @R0
  260.             MOV    DPH, A
  261.             INC    R0
  262.             MOV    A, @R0
  263.             MOV    DPL, A
  264.             CLR    A
  265.             JMP    @A+DPTR
  266.  
  267.  
  268. main_4:            JB    dc_status.4, main_6
  269.  
  270.             CALL    inp_buf_add        ; Ziffer
  271.             LJMP    main_0
  272.  
  273. main_6:            LJMP    main_dail
  274.  
  275.  
  276.  
  277. main_5:                            ; Klien Buchstabe
  278.             CJNE    A, #'p', main_10
  279.             LJMP    main_period
  280. main_10:        CJNE    A, #'o', main_11
  281.             LJMP    main_hsw_off
  282. main_11:        CJNE    A, #'i', main_12
  283.             LJMP    main_hsw_on
  284. main_12:        CJNE    A, #'r', main_13
  285.             LJMP    main_isdn_reciv
  286. main_13:        CJNE    A, #'u', main_14
  287.             LJMP    main_show_rtc
  288. main_14:
  289.             CALL    inp_buf_add
  290.             LJMP    main_0
  291.  
  292. ; -----------------------------------------------------------------------------
  293.  
  294. main_period:    ;    MOV    A, #'p'
  295.         ;    CALL    inp_buf_add
  296.             LJMP    main_0
  297.  
  298.  
  299. main_hsw_off:        CALL    lcd_rd_ctrl
  300.             MOV    R2, A
  301.             MOV    A, #0A7h
  302.             CALL    lcd_wr_ctrl
  303.  
  304.             MOV    A, #0A1h
  305.             CALL    lcd_wr_data
  306.  
  307.             MOV    A, R2
  308.             ORL    A, #080h
  309.             CALL    lcd_wr_ctrl
  310.  
  311.             MOV    DPS, #000h
  312.             MOV    DPTR, #dat_d3_discon
  313.             CALL    dc_send_d3_pack
  314.  
  315.             CLR    dc_status.4
  316.  
  317.             LJMP    main_0
  318.  
  319.  
  320. main_hsw_on:        CALL    lcd_rd_ctrl
  321.             MOV    R2, A
  322.             MOV    A, #0A7h
  323.             CALL    lcd_wr_ctrl
  324.  
  325.             MOV    A, #0DFh
  326.             CALL    lcd_wr_data
  327.  
  328.             MOV    A, R2
  329.             ORL    A, #080h
  330.             CALL    lcd_wr_ctrl
  331.  
  332.             JB    dc_status.3, main_hsw_on_1
  333.  
  334.         CALL    dc_activate
  335.  
  336.         MOV    A, #002h
  337.         CALL    wait_period
  338.  
  339.         CALL    dc_sabme
  340.  
  341.         MOV    A, #002h
  342.         CALL    wait_period
  343.  
  344.  
  345.             MOV    DPS, #000h
  346.             MOV    DPTR, #dat_d3_setup_a
  347.             CALL    dc_send_d3_pack
  348.  
  349.             SETB    dc_status.4
  350.  
  351.             LJMP    main_0
  352.  
  353.  
  354. main_hsw_on_1:
  355.             MOV    A, #007h
  356.             CALL    dc_send_d3_byte
  357.  
  358.             LJMP    main_0
  359.  
  360.  
  361. main_dail:        MOV    DPS, #001h
  362.             MOV    DPTR, #X_Dc_Trans_Buf
  363.             MOV    DPL1, #00Bh
  364.             MOVX    @DPTR, A
  365.  
  366.             MOV    DPS, #000h
  367.             MOV    DPTR, #dat_d3_dail1
  368.             CALL    dc_send_d3_pack
  369.  
  370.             LJMP    main_0
  371.  
  372. ; -----------------------------------------------------------------------------
  373.  
  374. main_show_rtc:        CALL    lcd_rd_ctrl
  375.             MOV    R2, A
  376.             MOV    A, #0A0h
  377.             CALL    lcd_wr_ctrl
  378.  
  379.             MOV    DPTR, #X_RTC_Ctrl
  380.             MOV    A, rtc_cal
  381.             ANL    A, #03Fh
  382.             ORL    A, #040h
  383.             MOVX    @DPTR, A
  384.  
  385.             MOV    DPTR, #X_RTC_Hour
  386.             MOVX    A, @DPTR
  387.             ANL    A, #03Fh
  388.             CALL    lcd_hex_byte
  389.  
  390.             MOV    A, #':'
  391.             CALL    lcd_wr_data
  392.  
  393.             MOV    DPTR, #X_RTC_Min
  394.             MOVX    A, @DPTR
  395.             ANL    A, #07Fh
  396.             CALL    lcd_hex_byte
  397.  
  398.             MOV    DPTR, #X_RTC_Ctrl
  399.             MOV    A, rtc_cal
  400.             ANL    A, #03Fh
  401.             MOVX    @DPTR, A
  402.  
  403.             MOV    A, R2
  404.             ORL    A, #080h
  405.             CALL    lcd_wr_ctrl
  406.  
  407.             LJMP    main_0
  408.  
  409.  
  410.  
  411. m_rtc_time:        MOV    A, input_buffer_p
  412.             CJNE    A, #input_buffer+0, m_rtc_time_1
  413.             SJMP    m_rtc_time_2
  414. m_rtc_time_1:        CJNE    A, #input_buffer+6, m_rtc_time_3
  415.  
  416.             MOV    DPTR, #X_RTC_Ctrl
  417.             MOV    A, rtc_cal
  418.             ANL    A, #03Fh
  419.             ORL    A, #080h
  420.             MOVX    @DPTR, A
  421.  
  422.             MOV    A, #000h
  423.             CALL    get_byte_inp_buf
  424.             ANL    A, #03Fh
  425.             MOV    DPTR, #X_RTC_Hour
  426.             MOVX    @DPTR, A
  427.  
  428.             MOV    A, #002h
  429.             CALL    get_byte_inp_buf
  430.             ANL    A, #07Fh
  431.             MOV    DPTR, #X_RTC_Min
  432.             MOVX    @DPTR, A
  433.  
  434.             MOV    A, #004h
  435.             CALL    get_byte_inp_buf
  436.             ANL    A, #07Fh
  437.             MOV    DPTR, #X_RTC_Sec
  438.             MOVX    @DPTR, A
  439.  
  440.             MOV    DPTR, #X_RTC_Ctrl
  441.             MOV    A, rtc_cal
  442.             ANL    A, #03Fh
  443.             MOVX    @DPTR, A
  444.  
  445.             CALL    inp_buf_init
  446.             LJMP    main_0
  447.  
  448. m_rtc_time_2:        MOV    DPTR, #X_RTC_Ctrl
  449.             MOV    A, rtc_cal
  450.             ANL    A, #03Fh
  451.             ORL    A, #040h
  452.             MOVX    @DPTR, A
  453.  
  454.             MOV    DPTR, #X_RTC_Hour
  455.             MOVX    A, @DPTR
  456.             ANL    A, #03Fh
  457.             CALL    put_byte_inp_buf
  458.  
  459.             MOV    DPTR, #X_RTC_Min
  460.             MOVX    A, @DPTR
  461.             ANL    A, #07Fh
  462.             CALL    put_byte_inp_buf
  463.  
  464.             MOV    DPTR, #X_RTC_Sec
  465.             MOVX    A, @DPTR
  466.             ANL    A, #07Fh
  467.             CALL    put_byte_inp_buf
  468.  
  469.             MOV    DPTR, #X_RTC_Ctrl
  470.             MOV    A, rtc_cal
  471.             ANL    A, #03Fh
  472.             MOVX    @DPTR, A
  473.  
  474.             LJMP    main_0
  475.  
  476. m_rtc_time_3:        LJMP    main_0
  477.  
  478.  
  479. m_rtc_date:        MOV    A, input_buffer_p
  480.             CJNE    A, #input_buffer+0, m_rtc_date_1
  481.             SJMP    m_rtc_date_2
  482. m_rtc_date_1:        CJNE    A, #input_buffer+8, m_rtc_date_3
  483.  
  484.             MOV    DPTR, #X_RTC_Ctrl
  485.             MOV    A, rtc_cal
  486.             ANL    A, #03Fh
  487.             ORL    A, #080h
  488.             MOVX    @DPTR, A
  489.  
  490.             MOV    A, #000h
  491.             CALL    get_byte_inp_buf
  492.             ANL    A, #03Fh
  493.             MOV    DPTR, #X_RTC_Year
  494.             MOVX    @DPTR, A
  495.  
  496.             MOV    A, #002h
  497.             CALL    get_byte_inp_buf
  498.             ANL    A, #07Fh
  499.             MOV    DPTR, #X_RTC_Month
  500.             MOVX    @DPTR, A
  501.  
  502.             MOV    A, #004h
  503.             CALL    get_byte_inp_buf
  504.             ANL    A, #07Fh
  505.             MOV    DPTR, #X_RTC_Date
  506.             MOVX    @DPTR, A
  507.  
  508.             MOV    A, #006h
  509.             CALL    get_byte_inp_buf
  510.             ANL    A, #07Fh
  511.             MOV    DPTR, #X_RTC_Day
  512.             MOVX    @DPTR, A
  513.  
  514.             MOV    DPTR, #X_RTC_Ctrl
  515.             MOV    A, rtc_cal
  516.             ANL    A, #03Fh
  517.             MOVX    @DPTR, A
  518.  
  519.             CALL    inp_buf_init
  520.             LJMP    main_0
  521.  
  522. m_rtc_date_2:        MOV    DPTR, #X_RTC_Ctrl
  523.             MOV    A, rtc_cal
  524.             ANL    A, #03Fh
  525.             ORL    A, #040h
  526.             MOVX    @DPTR, A
  527.  
  528.             MOV    DPTR, #X_RTC_Year
  529.             MOVX    A, @DPTR
  530.             ANL    A, #03Fh
  531.             CALL    put_byte_inp_buf
  532.  
  533.             MOV    DPTR, #X_RTC_Month
  534.             MOVX    A, @DPTR
  535.             ANL    A, #07Fh
  536.             CALL    put_byte_inp_buf
  537.  
  538.             MOV    DPTR, #X_RTC_Date
  539.             MOVX    A, @DPTR
  540.             ANL    A, #07Fh
  541.             CALL    put_byte_inp_buf
  542.  
  543.             MOV    DPTR, #X_RTC_Day
  544.             MOVX    A, @DPTR
  545.             ANL    A, #07Fh
  546.             CALL    put_byte_inp_buf
  547.  
  548.             MOV    DPTR, #X_RTC_Ctrl
  549.             MOV    A, rtc_cal
  550.             ANL    A, #03Fh
  551.             MOVX    @DPTR, A
  552.  
  553.             LJMP    main_0
  554.  
  555. m_rtc_date_3:        LJMP    main_0
  556.  
  557.  
  558. m_rtc_cal:        MOV    A, input_buffer_p
  559.             CJNE    A, #input_buffer+0, m_rtc_cal_1
  560.             SJMP    m_rtc_cal_2
  561. m_rtc_cal_1:        CJNE    A, #input_buffer+2, m_rtc_cal_3
  562.  
  563.             CLR    A
  564.             CALL    get_byte_inp_buf
  565.             ANL    A, #03Fh
  566.             MOV    DPTR, #X_RTC_Ctrl
  567.             MOVX    @DPTR, A
  568.             CALL    inp_buf_init
  569.             LJMP    main_0
  570.  
  571. m_rtc_cal_2:        MOV    DPTR, #X_RTC_Ctrl
  572.             MOVX    A, @DPTR
  573.             ANL    A, #03Fh
  574.             CALL    put_byte_inp_buf
  575.             LJMP    main_0
  576.  
  577. m_rtc_cal_3:        LJMP    main_0
  578.  
  579.  
  580. m_rtc_go:        MOV    DPTR, #X_RTC_Ctrl
  581.             MOV    A, rtc_cal
  582.             ANL    A, #03Fh
  583.             ORL    A, #080h
  584.             MOVX    @DPTR, A
  585.  
  586.             MOV    DPTR, #X_RTC_Sec
  587.             MOV    A, #000h
  588.             MOVX    @DPTR, A
  589.  
  590.             MOV    DPTR, #X_RTC_Ctrl
  591.             MOV    A, rtc_cal
  592.             ANL    A, #03Fh
  593.             MOVX    @DPTR, A
  594.  
  595.             LJMP    main_0
  596.  
  597.  
  598. m_rtc_stop:        MOV    DPTR, #X_RTC_Sec
  599.             MOV    A, #080h
  600.             MOVX    @DPTR, A
  601.             LJMP    main_0
  602.  
  603. ; -----------------------------------------------------------------------------
  604.  
  605. m_set_tei:        MOV    A, input_buffer_p
  606.             CJNE    A, #input_buffer+0, m_set_tei_1
  607.             SJMP    m_set_tei_2
  608. m_set_tei_1:        CJNE    A, #input_buffer+2, m_set_tei_3
  609.  
  610.             CLR    A
  611.             CALL    get_byte_inp_buf
  612.             RL    A
  613.             ORL    A, #001h
  614.             MOV    dc_d2_tei, A
  615.             CALL    inp_buf_init
  616.             LJMP    main_0
  617.  
  618. m_set_tei_2:        MOV    A, dc_d2_tei
  619.             RR    A
  620.             ANL    A, #07Fh
  621.             CALL    put_byte_inp_buf
  622.             LJMP    main_0
  623.  
  624. m_set_tei_3:        LJMP    main_0
  625.  
  626. ; -----------------------------------------------------------------------------
  627.  
  628. main_isdn_reciv:
  629.         CALL    isdn_d2_reciv
  630.  
  631.         MOV    DPS, #000h
  632.         MOV    R3, dc_reciv_buf_l
  633.         MOV    DPTR, #X_Dc_Reciv_Buf
  634.         MOVX    A, @DPTR
  635.         MOV    R4, A
  636.         MOV    A, R3
  637.         DEC    A    
  638.         MOV    DPL, A
  639.         MOVX    A, @DPTR
  640.         MOV    R5, A
  641.     
  642.         CALL    lcd_rd_ctrl
  643.         MOV    R2, A
  644.         MOV    A, #0A2h
  645.         CALL    lcd_wr_ctrl
  646.  
  647.         MOV    A, R3
  648.         CALL    lcd_hex_byte
  649.         MOV    A, R4
  650.         CALL    lcd_hex_byte
  651.         MOV    A, R5
  652.         CALL    lcd_hex_byte
  653.  
  654.         MOV    A, R2
  655.         ORL    A, #080h
  656.         CALL    lcd_wr_ctrl
  657.  
  658.             JMP    main_0
  659.  
  660.  
  661. ; -----------------------------------------------------------------------------
  662. ; -----------------------------------------------------------------------------
  663.  
  664. m_menu_main:        MOV    DPTR, #txt_main_menu
  665.             CALL    lcd_status
  666.             CALL    menu_init
  667.             MOV    DPS, #000h
  668.             MOV    DPTR, #m_menu_main
  669.             MOV    menu_back_h, DPH
  670.             MOV    menu_back_l, DPL
  671.             LJMP    main_0
  672.  
  673. m_menu_crypt:        MOV    DPTR, #txt_crypt_menu
  674.             CALL    lcd_status
  675.             MOV    A, #000h
  676.             MOV    DPTR, #mnu_main
  677.             CALL    menu_make
  678.             MOV    A, #001h
  679.             MOV    DPTR, #mnu_dsci
  680.             CALL    menu_make
  681.             MOV    A, #002h
  682.             MOV    DPTR, #mnu_mon_off
  683.             CALL    menu_make
  684.             MOV    A, #003h
  685.             MOV    DPTR, #mnu_c_mon_b1
  686.             CALL    menu_make
  687.             MOV    A, #004h
  688.             MOV    DPTR, #mnu_c_mon_b2
  689.             CALL    menu_make
  690.             MOV    A, #005h
  691.             MOV    DPTR, #mnu_c_mon_t_b1
  692.             CALL    menu_make
  693.             MOV    A, #006h
  694.             MOV    DPTR, #mnu_c_mon_t_b2
  695.             CALL    menu_make
  696.             MOV    A, #007h
  697.             MOV    DPTR, #mnu_
  698.             CALL    menu_make
  699.             LJMP    main_0
  700.  
  701. m_menu_setup:        MOV    DPTR, #txt_setup_menu
  702.             CALL    lcd_status
  703.             MOV    A, #000h
  704.             MOV    DPTR, #mnu_main
  705.             CALL    menu_make
  706.             MOV    A, #001h
  707.             MOV    DPTR, #mnu_set_tei
  708.             CALL    menu_make
  709.             MOV    A, #002h
  710.             MOV    DPTR, #mnu_
  711.             CALL    menu_make
  712.             MOV    A, #003h
  713.             MOV    DPTR, #mnu_
  714.             CALL    menu_make
  715.             MOV    A, #004h
  716.             MOV    DPTR, #mnu_rtc
  717.             CALL    menu_make
  718.             MOV    A, #005h
  719.             MOV    DPTR, #mnu_
  720.             CALL    menu_make
  721.             MOV    A, #006h
  722.             MOV    DPTR, #mnu_hex
  723.             CALL    menu_make
  724.             MOV    A, #007h
  725.             MOV    DPTR, #mnu_bksp
  726.             CALL    menu_make
  727.             MOV    DPS, #000h
  728.             MOV    DPTR, #m_menu_setup
  729.             MOV    menu_back_h, DPH
  730.             MOV    menu_back_l, DPL
  731.             LJMP    main_0
  732.  
  733. m_menu_mon:        MOV    DPTR, #txt_mon_menu
  734.             CALL    lcd_status
  735.             MOV    A, #000h
  736.             MOV    DPTR, #mnu_main
  737.             CALL    menu_make
  738.             MOV    A, #001h
  739.             MOV    DPTR, #mnu_dsci
  740.             CALL    menu_make
  741.             MOV    A, #002h
  742.             MOV    DPTR, #mnu_mon_off
  743.             CALL    menu_make
  744.             MOV    A, #003h
  745.             MOV    DPTR, #mnu_mon_b1
  746.             CALL    menu_make
  747.             MOV    A, #004h
  748.             MOV    DPTR, #mnu_mon_b2
  749.             CALL    menu_make
  750.             MOV    A, #005h
  751.             MOV    DPTR, #mnu_mon_t_b1
  752.             CALL    menu_make
  753.             MOV    A, #006h
  754.             MOV    DPTR, #mnu_mon_t_b2
  755.             CALL    menu_make
  756.             MOV    A, #007h
  757.             MOV    DPTR, #mnu_1khz
  758.             CALL    menu_make
  759.             LJMP    main_0
  760.  
  761. m_menu_dc:        MOV    DPTR, #txt_dc_menu
  762.             CALL    lcd_status
  763.             MOV    A, #000h
  764.             MOV    DPTR, #mnu_main
  765.             CALL    menu_make
  766.             MOV    A, #001h
  767.             MOV    DPTR, #mnu_lsr
  768.             CALL    menu_make
  769.             MOV    A, #002h
  770.             MOV    DPTR, #mnu_dsr
  771.             CALL    menu_make
  772.             MOV    A, #003h
  773.             MOV    DPTR, #mnu_dsci
  774.             CALL    menu_make
  775.             MOV    A, #004h
  776.             MOV    DPTR, #mnu_s0ac
  777.             CALL    menu_make
  778.             MOV    A, #005h
  779.             MOV    DPTR, #mnu_sabme
  780.             CALL    menu_make
  781.             MOV    A, #006h
  782.             MOV    DPTR, #mnu_
  783.             CALL    menu_make
  784.             MOV    A, #007h
  785.             MOV    DPTR, #mnu_
  786.             CALL    menu_make
  787.             LJMP    main_0
  788.  
  789. m_menu_rtc:        MOV    DPTR, #txt_rtc_menu
  790.             CALL    lcd_status
  791.             MOV    A, #000h
  792.             MOV    DPTR, #mnu_main
  793.             CALL    menu_make
  794.             MOV    A, #001h
  795.             MOV    DPTR, #mnu_rtc_time
  796.             CALL    menu_make
  797.             MOV    A, #002h
  798.             MOV    DPTR, #mnu_rtc_date
  799.             CALL    menu_make
  800.             MOV    A, #003h
  801.             MOV    DPTR, #mnu_rtc_cal
  802.             CALL    menu_make
  803.             MOV    A, #004h
  804.             MOV    DPTR, #mnu_rtc_stop
  805.             CALL    menu_make
  806.             MOV    A, #005h
  807.             MOV    DPTR, #mnu_rtc_go
  808.             CALL    menu_make
  809.             MOV    A, #006h
  810.             MOV    DPTR, #mnu_
  811.             CALL    menu_make
  812.             MOV    A, #007h
  813.             MOV    DPTR, #mnu_bksp
  814.             CALL    menu_make
  815.             LJMP    main_0
  816.  
  817.  
  818. m_dsci:            CALL    dsc_init
  819.             LJMP    main_0
  820.  
  821.  
  822. m_bksp:            CALL    inp_buf_del
  823.             LJMP    main_0
  824.  
  825.  
  826.  
  827. m_mon_off:        CALL    dsc_b_off
  828.             LJMP    main_0
  829.  
  830. m_mon_b1:        CALL    dsc_b1_plain
  831.             LJMP    main_0
  832.  
  833. m_mon_b2:        CALL    dsc_b2_plain
  834.             LJMP    main_0
  835.  
  836. m_mon_t_b1:        CALL    dsc_t_b1_plain
  837.             LJMP    main_0
  838.  
  839. m_mon_t_b2:        CALL    dsc_t_b2_plain
  840.             LJMP    main_0
  841.  
  842. m_c_mon_b1:        CALL    dsc_b1_crypt
  843.             LJMP    main_0
  844.  
  845. m_c_mon_b2:        CALL    dsc_b2_crypt
  846.             LJMP    main_0
  847.  
  848. m_c_mon_t_b1:        CALL    dsc_t_b1_crypt
  849.             LJMP    main_0
  850.  
  851. m_c_mon_t_b2:        CALL    dsc_t_b2_crypt
  852.             LJMP    main_0
  853.  
  854.  
  855. m_1khz:        MOV    P2, #0E0h
  856.         MOV    R0, #R_DSC_CrIr
  857.         MOV    R1, #R_DSC_Data
  858.  
  859.         CLR    EA
  860.  
  861.         MOV    A, #DSCi_strf
  862.         MOVX    @R0, A
  863.         MOV    A, #003h
  864.         MOVX    @R1, A
  865.  
  866.         MOV    A, #DSCi_stra
  867.         MOVX    @R0, A
  868.         MOV    A, #0A0h
  869.         MOVX    @R1, A
  870.  
  871.         MOV    A, #DSCi_mmr3
  872.         MOVX    @R0, A
  873.         MOV    A, #009h
  874.         MOVX    @R1, A
  875.  
  876.         MOV    A, #DSCi_mmr2
  877.         MOVX    @R0, A
  878.         MOV    A, #00Ah
  879.         MOVX    @R1, A
  880.  
  881.         SETB    EA
  882.         LJMP    main_0
  883.  
  884.  
  885.  
  886.  
  887. m_sabme:    CALL    dc_sabme
  888.  
  889.         LJMP    main_0
  890.  
  891.  
  892. m_s0ac:        CALL    dc_activate
  893.  
  894.         LJMP    main_0
  895.  
  896.         MOV    P2, #0E0h
  897.         MOV    R0, #R_DSC_CrIr
  898.         MOV    R1, #R_DSC_Data
  899.  
  900.         CLR    EA
  901.  
  902.         MOV    A, #DSCi_lmr1
  903.         MOVX    @R0, A
  904.         MOV    A, #050h
  905.         MOVX    @R1, A
  906.  
  907.         SETB    EA
  908.         LJMP    main_0
  909.  
  910.  
  911. m_lsr:        MOV    P2, #0E0h
  912.         MOV    R0, #R_DSC_CrIr
  913.         MOV    R1, #R_DSC_Data
  914.  
  915.         CLR    EA
  916.  
  917.         MOV    A, #DSCi_lsr
  918.         MOVX    @R0, A
  919.         MOVX    A, @R1
  920.  
  921.         SETB    EA
  922.  
  923.         MOV    R3, A
  924.  
  925.         CALL    lcd_rd_ctrl
  926.         MOV    R2, A
  927.         MOV    A, #0A2h
  928.         CALL    lcd_wr_ctrl
  929.  
  930.         MOV    A, R3
  931.         CALL    lcd_hex_byte
  932.  
  933.         MOV    A, R2
  934.         ORL    A, #080h
  935.         CALL    lcd_wr_ctrl
  936.  
  937.         LJMP    main_0
  938.  
  939.  
  940. m_dsr:        MOV    DPTR, #X_DSC_dsr1
  941.         MOVX    A, @DPTR
  942.         MOV    R3, A
  943.         MOV    DPTR, #X_DSC_dsr2
  944.         MOVX    A, @DPTR
  945.         MOV    R4, A
  946.         MOV    DPTR, #X_DSC_der
  947.         MOVX    A, @DPTR
  948.         MOV    R5, A
  949.         
  950.         CALL    lcd_rd_ctrl
  951.         MOV    R2, A
  952.         MOV    A, #0A2h
  953.         CALL    lcd_wr_ctrl
  954.  
  955.         MOV    A, R3
  956.         CALL    lcd_hex_byte
  957.         MOV    A, R4
  958.         CALL    lcd_hex_byte
  959.         MOV    A, R5
  960.         CALL    lcd_hex_byte
  961.  
  962.         MOV    A, R2
  963.         ORL    A, #080h
  964.         CALL    lcd_wr_ctrl
  965.  
  966.         LJMP    main_0
  967.  
  968. ; -----------------------------------------------------------------------------
  969.  
  970. m_hex_menu:        MOV    DPTR, #txt_hex_menu
  971.             CALL    lcd_status
  972.             MOV    A, #000h
  973.             MOV    DPTR, #mnu_hex_back
  974.             CALL    menu_make
  975.             MOV    A, #001h
  976.             MOV    DPTR, #mnu_hex_a
  977.             CALL    menu_make
  978.             MOV    A, #002h
  979.             MOV    DPTR, #mnu_hex_b
  980.             CALL    menu_make
  981.             MOV    A, #003h
  982.             MOV    DPTR, #mnu_hex_c
  983.             CALL    menu_make
  984.             MOV    A, #004h
  985.             MOV    DPTR, #mnu_hex_d
  986.             CALL    menu_make
  987.             MOV    A, #005h
  988.             MOV    DPTR, #mnu_hex_e
  989.             CALL    menu_make
  990.             MOV    A, #006h
  991.             MOV    DPTR, #mnu_hex_f
  992.             CALL    menu_make
  993.             MOV    A, #007h
  994.             MOV    DPTR, #mnu_bksp
  995.             CALL    menu_make
  996.             LJMP    main_0
  997.  
  998. m_hex_a:        MOV    A, #'A'
  999.             CALL    inp_buf_add
  1000.             LJMP    main_0
  1001.  
  1002. m_hex_b:        MOV    A, #'B'
  1003.             CALL    inp_buf_add
  1004.             LJMP    main_0
  1005.  
  1006. m_hex_c:        MOV    A, #'C'
  1007.             CALL    inp_buf_add
  1008.             LJMP    main_0
  1009.  
  1010. m_hex_d:        MOV    A, #'D'
  1011.             CALL    inp_buf_add
  1012.             LJMP    main_0
  1013.  
  1014. m_hex_e:        MOV    A, #'E'
  1015.             CALL    inp_buf_add
  1016.             LJMP    main_0
  1017.  
  1018. m_hex_f:        MOV    A, #'F'
  1019.             CALL    inp_buf_add
  1020.             LJMP    main_0
  1021.  
  1022. m_hex_back:        MOV    DPS, #000h
  1023.             MOV    DPH, menu_back_h
  1024.             MOV    DPL, menu_back_l
  1025.             CLR    A
  1026.             JMP    @A+DPTR
  1027.  
  1028. ; -----------------------------------------------------------------------------
  1029. ; -----------------------------------------------------------------------------
  1030.  
  1031. inp_buf_init:        MOV    R0, #input_buffer
  1032.             MOV    R7, #input_buf_max
  1033.             MOV    A, #080h
  1034.             CALL    lcd_wr_ctrl
  1035. inp_buf_init_1:        CLR    A
  1036.             MOV    @R0, A
  1037.             INC    R0
  1038.             MOV    A, #020h
  1039.             CALL    lcd_wr_data
  1040.             DJNZ    R7, inp_buf_init_1
  1041.             MOV    A, #0FFh
  1042.             CALL    lcd_wr_data
  1043.             MOV    R0, #input_buffer
  1044.             MOV    input_buffer_p, R0
  1045.             MOV    A, #080h
  1046.             CALL    lcd_wr_ctrl
  1047.             RET
  1048.  
  1049. inp_buf_add:        MOV    R2, A
  1050.             MOV    R0, input_buffer_p
  1051.             MOV    A, R0
  1052.             CLR    C
  1053.             SUBB    A, #input_buffer
  1054.             CLR    C
  1055.             SUBB    A, #input_buf_max
  1056.             JNC    inp_buf_add_1
  1057.             MOV    A, R2
  1058.             MOV    @R0, A
  1059.             INC    R0
  1060.             MOV    input_buffer_p, R0
  1061.             CALL    lcd_wr_data
  1062. inp_buf_add_1:        RET
  1063.  
  1064. inp_buf_del:        MOV    R0, input_buffer_p
  1065.             MOV    A, R0
  1066.             CLR    C
  1067.             SUBB    A, #input_buffer
  1068.             JC    inp_buf_del_1
  1069.             JZ    inp_buf_del_1
  1070.             DEC    R0
  1071.             CLR    A
  1072.             MOV    @R0, A
  1073.             MOV    input_buffer_p, R0
  1074.             MOV    A, #010h
  1075.             CALL    lcd_wr_ctrl
  1076.             MOV    A, #020h
  1077.             CALL    lcd_wr_data
  1078.             MOV    A, #010h
  1079.             CALL    lcd_wr_ctrl
  1080. inp_buf_del_1:        RET
  1081.  
  1082. ; -----------------------------------------------------------------------------
  1083.  
  1084. get_byte_inp_buf:    ADD    A, #input_buffer
  1085.             MOV    R0, A
  1086.             MOV    A, @R0
  1087.             CALL    get_hex_nib
  1088.             SWAP    A
  1089.             MOV    B, A
  1090.             INC    R0
  1091.             MOV    A, @R0
  1092.             CALL    get_hex_nib
  1093.             ORL    A, B
  1094.             RET
  1095.  
  1096. get_hex_nib:        MOV    R2, A
  1097.             ANL    A, #0F0h
  1098.             CJNE    A, #030h, get_hex_nib_1
  1099.             SJMP    get_hex_nib_2
  1100. get_hex_nib_1:        CJNE    A, #040h, get_hex_nib_3
  1101.  
  1102.             MOV    A, R2
  1103.             ANL    A, #00Fh
  1104.             CLR    C
  1105.             SUBB    A, #007h
  1106.             JNC    get_hex_nib_3
  1107.             MOV    A, R2
  1108.             ADD    A, #009h
  1109.             ANL    A, #00Fh
  1110.             RET
  1111.  
  1112. get_hex_nib_2:        MOV    A, R2
  1113.             ANL    A, #00Fh
  1114.             CLR    C
  1115.             SUBB    A, #00Ah
  1116.             JNC    get_hex_nib_3
  1117.             MOV    A, R2
  1118.             ANL    A, #00Fh
  1119.             RET
  1120.  
  1121. get_hex_nib_3:        CLR    A
  1122.             RET
  1123.  
  1124.  
  1125. put_byte_inp_buf:    PUSH    ACC
  1126.             SWAP    A
  1127.             ANL    A, #00Fh
  1128.             CLR    C
  1129.             SUBB    A, #00Ah
  1130.             JC    put_byte_inp_buf_1
  1131.             ADD    A, #007h
  1132. put_byte_inp_buf_1:    ADD    A, #03Ah
  1133.             CALL    inp_buf_add
  1134.             POP    ACC
  1135.             ANL    A, #00Fh
  1136.             CLR    C
  1137.             SUBB    A, #00Ah
  1138.             JC    put_byte_inp_buf_2
  1139.             ADD    A, #007h
  1140. put_byte_inp_buf_2:    ADD    A, #03Ah
  1141.             CALL    inp_buf_add
  1142.             RET
  1143.  
  1144. ; -----------------------------------------------------------------------------
  1145.  
  1146. menu_init:        MOV    A, #000h
  1147.             MOV    DPTR, #mnu_
  1148.             CALL    menu_make
  1149.             MOV    A, #001h
  1150.             MOV    DPTR, #mnu_crypt
  1151.             CALL    menu_make
  1152.             MOV    A, #002h
  1153.             MOV    DPTR, #mnu_setup
  1154.             CALL    menu_make
  1155.             MOV    A, #003h
  1156.             MOV    DPTR, #mnu_mon
  1157.             CALL    menu_make
  1158.             MOV    A, #004h
  1159.             MOV    DPTR, #mnu_dc
  1160.             CALL    menu_make
  1161.             MOV    A, #005h
  1162.             MOV    DPTR, #mnu_
  1163.             CALL    menu_make
  1164.             MOV    A, #006h
  1165.             MOV    DPTR, #mnu_
  1166.             CALL    menu_make
  1167.             MOV    A, #007h
  1168.             MOV    DPTR, #mnu_bksp
  1169.             CALL    menu_make
  1170.             RET
  1171.  
  1172.  
  1173. menu_make:        ANL    A, #007h
  1174.             MOV    R3, A
  1175.             CALL    lcd_rd_ctrl
  1176.             MOV    R2, A
  1177.             MOV    A, R3
  1178.             MOV    B, #005h
  1179.             MUL    AB
  1180.             ADD    A, #0C0h
  1181.             CALL    lcd_wr_ctrl
  1182.             MOV    R7, #004h
  1183. menu_make_1:        CLR    A
  1184.             MOVC    A, @A+DPTR
  1185.             CALL    lcd_wr_data
  1186.             INC    DPTR
  1187.             DJNZ    R7, menu_make_1
  1188.             MOV    A, R3
  1189.             RL    A
  1190.             ADD    A, #menu_start_adr
  1191.             MOV    R0, A
  1192.             CLR    A
  1193.             MOVC    A, @A+DPTR
  1194.             MOV    @R0, A
  1195.             INC    DPTR
  1196.             INC    R0
  1197.             CLR    A
  1198.             MOVC    A, @A+DPTR
  1199.             MOV    @R0, A
  1200.             INC    DPTR
  1201.             MOV    A, R2
  1202.             ORL    A, #080h
  1203.             CALL    lcd_wr_ctrl
  1204.             RET
  1205.  
  1206.  
  1207. m_nop:            LJMP    main_0
  1208.  
  1209. ; -----------------------------------------------------------------------------
  1210.  
  1211. cpu_init:        MOV    P1, #0FFh
  1212.             MOV    P2, #0E0h
  1213.             MOV    P3, #0FFh
  1214.  
  1215.             MOV    A, CKCON    ; Speed for WatchDogTimer
  1216.             ANL    A, #03Fh
  1217.             ORL    A, #080h
  1218.             MOV    CKCON, A
  1219.  
  1220.             MOV    A, CKCON    ; Speed for MOVX
  1221.             ANL    A, #0F8h
  1222.             ORL    A, #004h
  1223.             MOV    CKCON, A
  1224.  
  1225.             MOV    DPS, #000h
  1226.  
  1227.             CLR    IE0        ; Interrupt Enable
  1228.             SETB    IT0
  1229.             CLR    IE1
  1230.             SETB    IT1
  1231.             MOV    IE, #085h
  1232.             MOV    EIE, #010h            
  1233.  
  1234.             MOV    WDCON, #000h
  1235.  
  1236.             MOV    A, #003h    ; TEI = 1
  1237.             MOV    dc_d2_tei, A
  1238.  
  1239.             MOV    A, #001h    ; Call Ref. = 1
  1240.             MOV    dc_d3_cr, A
  1241.  
  1242.             MOV    rtc_cal, #020h
  1243.             MOV    DPTR, #X_RTC_Ctrl
  1244.             MOV    A, rtc_cal    ; RTC Calibrate
  1245.             ANL    A, #03Fh
  1246.             MOVX    @DPTR, A
  1247.  
  1248.             RET
  1249.  
  1250. ; -----------------------------------------------------------------------------
  1251.  
  1252. dsc_init:        MOV    P2, #0E0h
  1253.             MOV    R0, #R_DSC_CrIr
  1254.             MOV    R1, #R_DSC_Data
  1255.  
  1256.             CLR    EA
  1257.  
  1258.             MOV    A, #DSCi_init
  1259.             MOVX    @R0, A
  1260.             MOV    A, #000h
  1261.             MOVX    @R1, A
  1262.  
  1263.             MOV    A, #DSCi_efcr
  1264.             MOVX    @R0, A
  1265.             MOV    A, #001h
  1266.             MOVX    @R1, A
  1267.  
  1268.             MOV    A, #DSCi_dmr4
  1269.             MOVX    @R0, A
  1270.             MOV    A, #00Fh
  1271.             MOVX    @R1, A
  1272.  
  1273.             MOV    A, #DSCi_init
  1274.             MOVX    @R0, A
  1275.             MOV    A, #001h
  1276.             MOVX    @R1, A
  1277.  
  1278.             MOV    A, #DSCi_init2
  1279.             MOVX    @R0, A
  1280.             MOV    A, #008h
  1281.             MOVX    @R1, A
  1282.  
  1283.             MOV    A, #DSCi_init2
  1284.             MOVX    @R0, A
  1285.             MOV    A, #008h
  1286.             MOVX    @R1, A
  1287.  
  1288.             MOV    A, #DSCi_lmr1
  1289.             MOVX    @R0, A
  1290.             MOV    A, #040h
  1291.             MOVX    @R1, A
  1292.  
  1293.             MOV    A, #DSCi_lmr2
  1294.             MOVX    @R0, A
  1295.             MOV    A, #020h
  1296.             MOVX    @R1, A
  1297.  
  1298.             MOV    A, #DSCi_ppcr2
  1299.             MOVX    @R0, A
  1300.             MOV    A, #001h
  1301.             MOVX    @R1, A
  1302.  
  1303.             MOV    A, #DSCi_mcr1
  1304.             MOVX    @R0, A
  1305.             MOV    A, #000h
  1306.             MOVX    @R1, A
  1307.  
  1308.             MOV    A, #DSCi_mcr2
  1309.             MOVX    @R0, A
  1310.             MOV    A, #000h
  1311.             MOVX    @R1, A
  1312.  
  1313.             MOV    A, #DSCi_mcr3
  1314.             MOVX    @R0, A
  1315.             MOV    A, #000h
  1316.             MOVX    @R1, A
  1317.  
  1318.             MOV    A, #DSCi_mcr4
  1319.             MOVX    @R0, A
  1320.             MOV    A, #000h
  1321.             MOVX    @R1, A
  1322.  
  1323.             MOV    A, #DSCi_mmr3
  1324.             MOVX    @R0, A
  1325.             MOV    A, #002h
  1326.             MOVX    @R1, A
  1327.  
  1328.             MOV    A, #DSCi_mmr2
  1329.             MOVX    @R0, A
  1330.             MOV    A, #000h
  1331.             MOVX    @R1, A
  1332.  
  1333.             MOV    A, #DSCi_mmr1
  1334.             MOVX    @R0, A
  1335.             MOV    A, #001h
  1336.             MOVX    @R1, A
  1337.  
  1338.             MOV    A, #DSCi_dmr1
  1339.             MOVX    @R0, A
  1340.             MOV    A, #07Bh
  1341.             MOVX    @R1, A
  1342.  
  1343.             MOV    A, #DSCi_dmr2
  1344.             MOVX    @R0, A
  1345.             MOV    A, #0FFh
  1346.             MOVX    @R1, A
  1347.  
  1348.             MOV    A, #DSCi_dmr3
  1349.             MOVX    @R0, A
  1350.             MOV    A, #042h
  1351.             MOVX    @R1, A
  1352.  
  1353.             MOV    A, #DSCi_drlr
  1354.             MOVX    @R0, A
  1355.             MOV    A, #dc_buffer_max
  1356.             MOVX    @R1, A
  1357.             MOV    A, #000h
  1358.             MOVX    @R1, A
  1359.  
  1360.  
  1361.             MOV    A, #DSCi_frar        ; Adr1= $00, TEI
  1362.             MOVX    @R0, A            ; Adr2= $00, $FF
  1363.             MOV    A, #000h        ; Adr3= $FE, $FF
  1364.             MOVX    @R1, A            ; Adr4=($FE, $FF)
  1365.             MOVX    @R1, A
  1366.             MOV    A, #0FEh
  1367.             MOVX    @R1, A
  1368.  
  1369.             MOV    A, #DSCi_srar
  1370.             MOVX    @R0, A
  1371.             MOV    A, dc_d2_tei
  1372.             MOVX    @R1, A
  1373.             MOV    A, #0FFh
  1374.             MOVX    @R1, A
  1375.             MOVX    @R1, A
  1376.  
  1377.             MOV    A, #DSCi_frar4
  1378.             MOVX    @R0, A
  1379.             MOV    A, #0FEh
  1380.             MOVX    @R1, A
  1381.  
  1382.             MOV    A, #DSCi_srar4
  1383.             MOVX    @R0, A
  1384.             MOV    A, #0FFh
  1385.             MOVX    @R1, A
  1386.  
  1387.             MOV    A, #DSCi_tar
  1388.             MOVX    @R0, A
  1389.             MOV    A, #000h
  1390.             MOVX    @R1, A
  1391.             MOV    A, #003h
  1392.             MOVX    @R1, A
  1393.  
  1394.  
  1395.             SETB    EA
  1396.  
  1397.             RET
  1398.  
  1399. ; -----------------------------------------------------------------------------
  1400.  
  1401. dsc_b_off:        MOV    P2, #0E0h
  1402.             MOV    R0, #R_DSC_CrIr
  1403.             MOV    R1, #R_DSC_Data
  1404.  
  1405.             CLR    EA
  1406.  
  1407.             MOV    A, #DSCi_mcr1
  1408.             MOVX    @R0, A
  1409.             MOV    A, #000h
  1410.             MOVX    @R1, A
  1411.  
  1412.             MOV    A, #DSCi_mcr2
  1413.             MOVX    @R0, A
  1414.             MOV    A, #000h
  1415.             MOVX    @R1, A
  1416.  
  1417.             MOV    A, #DSCi_lmr1
  1418.             MOVX    @R0, A
  1419.             MOV    A, #040h
  1420.             MOVX    @R1, A
  1421.  
  1422.             SETB    EA
  1423.  
  1424.             RET
  1425.  
  1426.  
  1427. dsc_b1_plain:        MOV    P2, #0E0h
  1428.             MOV    R0, #R_DSC_CrIr
  1429.             MOV    R1, #R_DSC_Data
  1430.  
  1431.             CLR    EA
  1432.  
  1433.             MOV    A, #DSCi_mcr1
  1434.             MOVX    @R0, A
  1435.             MOV    A, #013h
  1436.             MOVX    @R1, A
  1437.  
  1438.             MOV    A, #DSCi_mcr2
  1439.             MOVX    @R0, A
  1440.             MOV    A, #000h
  1441.             MOVX    @R1, A
  1442.  
  1443.             MOV    A, #DSCi_lmr1
  1444.             MOVX    @R0, A
  1445.             MOV    A, #040h
  1446.             MOVX    @R1, A
  1447.  
  1448.             SETB    EA
  1449.  
  1450.             RET
  1451.  
  1452.  
  1453. dsc_b2_plain:        MOV    P2, #0E0h
  1454.             MOV    R0, #R_DSC_CrIr
  1455.             MOV    R1, #R_DSC_Data
  1456.  
  1457.             CLR    EA
  1458.  
  1459.             MOV    A, #DSCi_mcr1
  1460.             MOVX    @R0, A
  1461.             MOV    A, #023h
  1462.             MOVX    @R1, A
  1463.  
  1464.             MOV    A, #DSCi_mcr2
  1465.             MOVX    @R0, A
  1466.             MOV    A, #000h
  1467.             MOVX    @R1, A
  1468.  
  1469.             MOV    A, #DSCi_lmr1
  1470.             MOVX    @R0, A
  1471.             MOV    A, #040h
  1472.             MOVX    @R1, A
  1473.  
  1474.             SETB    EA
  1475.  
  1476.             RET
  1477.  
  1478.  
  1479. dsc_t_b1_plain:        MOV    P2, #0E0h
  1480.             MOV    R0, #R_DSC_CrIr
  1481.             MOV    R1, #R_DSC_Data
  1482.  
  1483.             CLR    EA
  1484.  
  1485.             MOV    A, #DSCi_mcr1
  1486.             MOVX    @R0, A
  1487.             MOV    A, #013h
  1488.             MOVX    @R1, A
  1489.  
  1490.             MOV    A, #DSCi_mcr2
  1491.             MOVX    @R0, A
  1492.             MOV    A, #000h
  1493.             MOVX    @R1, A
  1494.  
  1495.             MOV    A, #DSCi_lmr1
  1496.             MOVX    @R0, A
  1497.             MOV    A, #041h
  1498.             MOVX    @R1, A
  1499.  
  1500.             SETB    EA
  1501.  
  1502.             RET
  1503.  
  1504.  
  1505. dsc_t_b2_plain:        MOV    P2, #0E0h
  1506.             MOV    R0, #R_DSC_CrIr
  1507.             MOV    R1, #R_DSC_Data
  1508.  
  1509.             CLR    EA
  1510.  
  1511.             MOV    A, #DSCi_mcr1
  1512.             MOVX    @R0, A
  1513.             MOV    A, #023h
  1514.             MOVX    @R1, A
  1515.  
  1516.             MOV    A, #DSCi_mcr2
  1517.             MOVX    @R0, A
  1518.             MOV    A, #000h
  1519.             MOVX    @R1, A
  1520.  
  1521.             MOV    A, #DSCi_lmr1
  1522.             MOVX    @R0, A
  1523.             MOV    A, #042h
  1524.             MOVX    @R1, A
  1525.  
  1526.             SETB    EA
  1527.  
  1528.             RET
  1529.  
  1530.  
  1531. dsc_b1_crypt:        MOV    P2, #0E0h
  1532.             MOV    R0, #R_DSC_CrIr
  1533.             MOV    R1, #R_DSC_Data
  1534.  
  1535.             CLR    EA
  1536.  
  1537.             MOV    A, #DSCi_mcr1
  1538.             MOVX    @R0, A
  1539.             MOV    A, #016h
  1540.             MOVX    @R1, A
  1541.  
  1542.             MOV    A, #DSCi_mcr2
  1543.             MOVX    @R0, A
  1544.             MOV    A, #073h
  1545.             MOVX    @R1, A
  1546.  
  1547.         MOV    A, #DSCi_mcr3
  1548.         MOVX    @R0, A
  1549.         MOV    A, #082h
  1550.         MOVX    @R1, A
  1551.  
  1552.             MOV    A, #DSCi_lmr1
  1553.             MOVX    @R0, A
  1554.             MOV    A, #040h
  1555.             MOVX    @R1, A
  1556.  
  1557.             SETB    EA
  1558.  
  1559.             RET
  1560.  
  1561.  
  1562. dsc_b2_crypt:        MOV    P2, #0E0h
  1563.             MOV    R0, #R_DSC_CrIr
  1564.             MOV    R1, #R_DSC_Data
  1565.  
  1566.             CLR    EA
  1567.  
  1568.             MOV    A, #DSCi_mcr1
  1569.             MOVX    @R0, A
  1570.             MOV    A, #026h
  1571.             MOVX    @R1, A
  1572.  
  1573.             MOV    A, #DSCi_mcr2
  1574.             MOVX    @R0, A
  1575.             MOV    A, #073h
  1576.             MOVX    @R1, A
  1577.  
  1578.             MOV    A, #DSCi_lmr1
  1579.             MOVX    @R0, A
  1580.             MOV    A, #040h
  1581.             MOVX    @R1, A
  1582.  
  1583.             SETB    EA
  1584.  
  1585.             RET
  1586.  
  1587.  
  1588. dsc_t_b1_crypt:        MOV    P2, #0E0h
  1589.             MOV    R0, #R_DSC_CrIr
  1590.             MOV    R1, #R_DSC_Data
  1591.  
  1592.             CLR    EA
  1593.  
  1594.             MOV    A, #DSCi_mcr1
  1595.             MOVX    @R0, A
  1596.             MOV    A, #016h
  1597.             MOVX    @R1, A
  1598.  
  1599.             MOV    A, #DSCi_mcr2
  1600.             MOVX    @R0, A
  1601.             MOV    A, #073h
  1602.             MOVX    @R1, A
  1603.  
  1604.             MOV    A, #DSCi_lmr1
  1605.             MOVX    @R0, A
  1606.             MOV    A, #041h
  1607.             MOVX    @R1, A
  1608.  
  1609.             SETB    EA
  1610.  
  1611.             RET
  1612.  
  1613.  
  1614. dsc_t_b2_crypt:        MOV    P2, #0E0h
  1615.             MOV    R0, #R_DSC_CrIr
  1616.             MOV    R1, #R_DSC_Data
  1617.  
  1618.             CLR    EA
  1619.  
  1620.             MOV    A, #DSCi_mcr1
  1621.             MOVX    @R0, A
  1622.             MOV    A, #026h
  1623.             MOVX    @R1, A
  1624.  
  1625.             MOV    A, #DSCi_mcr2
  1626.             MOVX    @R0, A
  1627.             MOV    A, #073h
  1628.             MOVX    @R1, A
  1629.  
  1630.             MOV    A, #DSCi_lmr1
  1631.             MOVX    @R0, A
  1632.             MOV    A, #042h
  1633.             MOVX    @R1, A
  1634.  
  1635.             SETB    EA
  1636.  
  1637.             RET
  1638.  
  1639. ; -----------------------------------------------------------------------------
  1640.  
  1641. lcd_status:        CALL    lcd_rd_ctrl
  1642.             MOV    R2, A
  1643.             MOV    A, #095h
  1644.             CALL    lcd_wr_ctrl
  1645.  
  1646.             CALL    lcd_str
  1647.  
  1648.             MOV    A, R2
  1649.             ORL    A, #080h
  1650.             CALL    lcd_wr_ctrl
  1651.  
  1652.             RET
  1653.  
  1654.  
  1655. lcd_init:        MOV    A, #038h
  1656.             CALL    lcd_wr_ctrl
  1657.             MOV    A, #038h
  1658.             CALL    lcd_wr_ctrl
  1659.             MOV    A, #038h
  1660.             CALL    lcd_wr_ctrl
  1661.             MOV    A, #00Eh
  1662.             CALL    lcd_wr_ctrl
  1663.             MOV    A, #006h
  1664.             CALL    lcd_wr_ctrl
  1665.             MOV    A, #001h
  1666.             CALL    lcd_wr_ctrl
  1667.             RET
  1668.  
  1669.  
  1670. lcd_str:        CLR    A
  1671.             MOVC    A, @A+DPTR
  1672.             JZ    lcd_str_1
  1673.             CALL    lcd_wr_data
  1674.             INC    DPTR
  1675.             JMP    lcd_str
  1676. lcd_str_1:        RET
  1677.  
  1678.  
  1679. lcd_str_c:        CLR    A
  1680.             MOVC    A, @A+DPTR
  1681.             JZ    lcd_str_c_1
  1682.             JB    ACC.7, lcd_str_c_2
  1683.             CALL    lcd_wr_data
  1684.             JMP    lcd_str_c_3
  1685. lcd_str_c_2:        CALL    lcd_wr_ctrl
  1686. lcd_str_c_3:        INC    DPTR
  1687.             JMP    lcd_str
  1688. lcd_str_c_1:        RET
  1689.  
  1690.  
  1691. lcd_hex_byte:        PUSH    ACC
  1692.             SWAP    A
  1693.             ANL    A, #00Fh
  1694.             CLR    C
  1695.             SUBB    A, #00Ah
  1696.             JC    lcd_hex_byte_1
  1697.             ADD    A, #007h
  1698. lcd_hex_byte_1:        ADD    A, #03Ah
  1699.             CALL    lcd_wr_data
  1700.             POP    ACC
  1701.             ANL    A, #00Fh
  1702.             CLR    C
  1703.             SUBB    A, #00Ah
  1704.             JC    lcd_hex_byte_2
  1705.             ADD    A, #007h
  1706. lcd_hex_byte_2:        ADD    A, #03Ah
  1707.             CALL    lcd_wr_data
  1708.             RET
  1709.  
  1710.  
  1711. lcd_wr_ctrl:        PUSH    DPL
  1712.             PUSH    DPH
  1713.             CALL    lcd_rd_bsy
  1714.             MOV    DPTR, #X_LCD_Ctrl
  1715.             MOVX    @DPTR, A
  1716.             POP    DPH
  1717.             POP    DPL
  1718.             RET
  1719.  
  1720. lcd_wr_data:        PUSH    DPL
  1721.             PUSH    DPH
  1722.             CALL    lcd_rd_bsy
  1723.             MOV    DPTR, #X_LCD_Data
  1724.             MOVX    @DPTR, A
  1725.             POP    DPH
  1726.             POP    DPL
  1727.             RET
  1728.  
  1729. lcd_rd_ctrl:        PUSH    DPL
  1730.             PUSH    DPH
  1731.             CALL    lcd_rd_bsy
  1732.             MOV    DPTR, #X_LCD_Ctrl
  1733.             MOVX    A, @DPTR
  1734.             POP    DPH
  1735.             POP    DPL
  1736.             RET
  1737.  
  1738. lcd_rd_data:        PUSH    DPL
  1739.             PUSH    DPH
  1740.             CALL    lcd_rd_bsy
  1741.             MOV    DPTR, #X_LCD_Data
  1742.             MOVX    A, @DPTR
  1743.             POP    DPH
  1744.             POP    DPL
  1745.             RET
  1746.  
  1747. lcd_rd_bsy:        PUSH    ACC
  1748.             MOV    DPTR, #X_LCD_Ctrl
  1749. lcd_rd_bsy_1:        MOVX    A, @DPTR
  1750.             JB    ACC.7, lcd_rd_bsy_1
  1751.             POP    ACC
  1752.             RET
  1753.  
  1754. ; -----------------------------------------------------------------------------
  1755. ; -----------------------------------------------------------------------------
  1756.  
  1757. dc_send_d3_byte:    MOV    DPS, #001h
  1758.             MOV    DPTR, #X_Dc_Trans_Buf
  1759.             MOV    DPL1, #007
  1760.             MOVX    @DPTR, A
  1761.             MOV    A, #001h
  1762.             SJMP    dc_send_d3
  1763.  
  1764.  
  1765. dc_send_d3_pack:    MOV    DPS, #000h
  1766.             CLR    A
  1767.             MOVC    A, @A+DPTR
  1768.             MOV    R6, A
  1769.             DEC    A
  1770.             MOV    R7, A
  1771.             INC    DPTR
  1772.             INC    DPS
  1773.             MOV    DPTR, #X_Dc_Trans_Buf
  1774.             MOV    DPL1, #007h
  1775.             INC    DPS
  1776. dc_send_d3_pack_1:    CLR    A
  1777.             MOVC    A, @A+DPTR
  1778.             INC    DPTR
  1779.             INC    DPS
  1780.             MOVX    @DPTR, A
  1781.             INC    DPTR
  1782.             INC    DPS
  1783.             DJNZ    R7, dc_send_d3_pack_1
  1784.  
  1785.             MOV    A, R6
  1786.  
  1787.  
  1788.  
  1789. dc_send_d3:        ADD    A, #007h
  1790.             MOV    dc_trans_buf_l, A
  1791.             MOV    DPS, #000h
  1792.             MOV    DPTR, #X_Dc_Trans_Buf
  1793.             MOV    A, #000h        ; SAPI
  1794.             MOVX    @DPTR, A
  1795.             INC    DPTR
  1796.             MOV    A, dc_d2_tei        ; TEI
  1797.             MOVX    @DPTR, A
  1798.             INC    DPTR
  1799.             MOV    A, dc_d2_ns        ; N(S)
  1800.             MOVX    @DPTR, A
  1801.             INC    DPTR
  1802.             MOV    A, dc_d2_nr        ; N(R)
  1803.             MOVX    @DPTR, A
  1804.             INC    DPTR
  1805.             MOV    A, #008h        ; Protokoll Diskrimin.
  1806.             MOVX    @DPTR, A
  1807.             INC    DPTR
  1808.             MOV    A, #001h        ; Call Reference 1
  1809.             MOVX    @DPTR, A
  1810.             INC    DPTR
  1811.             MOV    A, dc_d3_cr        ; Call Reference 2
  1812.             MOVX    @DPTR, A
  1813.  
  1814.             INC    dc_d2_ns
  1815.             INC    dc_d2_ns
  1816.  
  1817. ; -----------------------------------------------------------------------------
  1818.  
  1819. dc_send:        MOV    P2, #0E0h
  1820.             MOV    R0, #R_DSC_CrIr
  1821.             MOV    R1, #R_DSC_Data
  1822.             MOV    DPS, #000h
  1823.  
  1824.             MOV    DPTR, #X_DSC_dsr2
  1825.             MOVX    A, @DPTR
  1826.             JNB    ACC.4, dc_send_err
  1827.  
  1828.             CLR    EA
  1829.  
  1830.             MOV    A, #DSCi_lsr
  1831.             MOVX    @R0, A
  1832.             MOVX    A, @R1
  1833.  
  1834.             SETB    EA
  1835.  
  1836.             ANL    A, #007h
  1837.             CJNE    A, #005h, dc_send_err
  1838.  
  1839.             CLR    EA
  1840.  
  1841.             MOV    DPS, #000h
  1842.             MOV    DPTR, #X_DSC_DCB
  1843.             INC    DPS
  1844.             MOV    DPTR, #X_Dc_Trans_buf
  1845.             MOV    A, dc_trans_buf_l
  1846.             CLR    C
  1847.             SUBB    A, #00Eh
  1848.             JC    dc_send_2
  1849.             MOV    R7, #00Eh
  1850.             SJMP    dc_send_1
  1851. dc_send_2:        MOV    R7, dc_trans_buf_l
  1852. dc_send_1:        MOVX    A, @DPTR
  1853.             INC    DPTR
  1854.             INC    DPS
  1855.             MOVX    @DPTR, A
  1856.             INC    DPS
  1857.             DJNZ    R7, dc_send_1
  1858.  
  1859.             MOV    A, DPL1
  1860.             MOV    dc_trans_buf_p, A
  1861.  
  1862.             MOV    A, #DSCi_dtcr
  1863.             MOVX    @R0, A
  1864.             MOV    A, dc_trans_buf_l
  1865.             MOVX    @R1, A
  1866.             CLR    A
  1867.             MOVX    @R1, A
  1868.  
  1869.             SETB    EA
  1870.  
  1871.             CLR    A
  1872.             RET
  1873.  
  1874.  
  1875. dc_send_err:        MOV    A, #0FFh
  1876.             RET
  1877.  
  1878. ; -----------------------------------------------------------------------------
  1879.  
  1880. dc_activate:        MOV    P2, #0E0h
  1881.             MOV    R0, #R_DSC_CrIr
  1882.             MOV    R1, #R_DSC_Data
  1883.  
  1884.             CLR    EA
  1885.             MOV    A, #DSCi_lmr1
  1886.             MOVX    @R0, A
  1887.             MOV    A, #050h
  1888.             MOVX    @R1, A
  1889.             SETB    EA
  1890.  
  1891.             RET
  1892.  
  1893.  
  1894.  
  1895. dc_sabme:        MOV    DPS, #000h
  1896.             MOV    DPTR, #X_Dc_Trans_buf
  1897.             MOV    A, #003h
  1898.             MOV    dc_trans_buf_l, A
  1899.  
  1900.             MOV    A, #000h
  1901.             MOVX    @DPTR, A
  1902.             INC    DPTR
  1903.             MOV    A, dc_d2_tei
  1904.             MOVX    @DPTR, A
  1905.             INC    DPTR
  1906.             MOV    A, #07Fh
  1907.             MOVX    @DPTR, A
  1908.             INC    DPTR
  1909.  
  1910.             CALL    dc_send
  1911.  
  1912.             MOV    dc_d2_ns, #000h
  1913.             MOV    dc_d2_nr, #000h
  1914.  
  1915.             RET
  1916.  
  1917. ; -----------------------------------------------------------------------------
  1918.  
  1919. isdn_d2_reciv:        MOV    dc_d2_rec_typ, #000h
  1920.  
  1921.             MOV    DPS, #000h
  1922.             MOV    DPTR, #X_Dc_Reciv_Buf
  1923.             MOVX    A, @DPTR        ; SAPI
  1924.             MOV    C, ACC.1        ; C/R Bit
  1925.             MOV    dc_d2_rec_typ.2, C
  1926.             ANL    A, #0FDh
  1927.             JZ    isdn_d2_reciv_1
  1928.             SETB    dc_d2_rec_typ.1
  1929. isdn_d2_reciv_1:    INC    DPTR            
  1930.             MOVX    A, @DPTR        ; TEI
  1931.             CJNE    A, #0FFh, isdn_d2_reciv_2
  1932.             SETB    dc_d2_rec_typ.0
  1933. isdn_d2_reciv_2:        INC    DPTR
  1934.             MOVX    A, @DPTR        ; N(S)
  1935.             MOV    C, ACC.0        ; Info = 0
  1936.             MOV    dc_d2_rec_typ.3, C
  1937.             MOV    C, ACC.1        ; RR/RNR/REJ = 0
  1938.             MOV    dc_d2_rec_typ.4, C
  1939.  
  1940.             MOV    A, dc_d2_rec_typ
  1941.             ANL    A, #01Fh
  1942.             MOV    B, #003h
  1943.             MUL    AB
  1944.             MOV    DPTR, #isdn_d2_reciv_tab
  1945.             JMP    @A+DPTR
  1946.  
  1947. isdn_d2_reciv_tab:    LJMP    isdn_d2_get_d3        ; 000,TEI , C/R=0, Info
  1948.             LJMP    isdn_d2_ignor        ; 000,0FF , C/R=0, Info
  1949.             LJMP    isdn_d2_ignor        ; 0Fx,TEI , C/R=0, Info
  1950.             LJMP    isdn_d2_ignor        ; 0Fx,0FF , C/R=0, Info
  1951.             LJMP    isdn_d2_get_d3        ; 000,TEI , C/R=1, Info
  1952.             LJMP    isdn_d2_ignor        ; 000,0FF , C/R=1, Info
  1953.             LJMP    isdn_d2_ignor        ; 0Fx,TEI , C/R=1, Info
  1954.             LJMP    isdn_d2_ignor        ; 0Fx,0FF , C/R=1, Info
  1955.             LJMP    isdn_d2_ignor        ; 000,TEI , C/R=0, Rxx
  1956.             LJMP    isdn_d2_ignor        ; 000,0FF , C/R=0, Rxx
  1957.             LJMP    isdn_d2_ignor        ; 0Fx,TEI , C/R=0, Rxx
  1958.             LJMP    isdn_d2_ignor        ; 0Fx,0FF , C/R=0, Rxx
  1959.             LJMP    isdn_d2_rr        ; 000,TEI , C/R=1, Rxx
  1960.             LJMP    isdn_d2_ignor        ; 000,0FF , C/R=1, Rxx
  1961.             LJMP    isdn_d2_ignor        ; 0Fx,TEI , C/R=1, Rxx
  1962.             LJMP    isdn_d2_ignor        ; 0Fx,0FF , C/R=1, Rxx
  1963.             LJMP    isdn_d2_get_d3        ; 000,TEI , C/R=0, Info
  1964.             LJMP    isdn_d2_ignor        ; 000,0FF , C/R=0, Info
  1965.             LJMP    isdn_d2_ignor        ; 0Fx,TEI , C/R=0, Info
  1966.             LJMP    isdn_d2_ignor        ; 0Fx,0FF , C/R=0, Info
  1967.             LJMP    isdn_d2_get_d3        ; 000,TEI , C/R=1, Info
  1968.             LJMP    isdn_d2_ignor        ; 000,0FF , C/R=1, Info
  1969.             LJMP    isdn_d2_ignor        ; 0Fx,TEI , C/R=1, Info
  1970.             LJMP    isdn_d2_ignor        ; 0Fx,0FF , C/R=1, Info
  1971.             LJMP    isdn_d2_ignor        ; 000,TEI , C/R=0, Ux
  1972.             LJMP    isdn_d2_ignor        ; 000,0FF , C/R=0, Ux
  1973.             LJMP    isdn_d2_ignor        ; 0Fx,TEI , C/R=0, Ux
  1974.             LJMP    isdn_d2_ignor        ; 0Fx,0FF , C/R=0, Ux
  1975.             LJMP    isdn_d2_ignor        ; 000,TEI , C/R=1, Ux
  1976.             LJMP    isdn_d2_get_d3_u    ; 000,0FF , C/R=1, Ux
  1977.             LJMP    isdn_d2_ignor        ; 0Fx,TEI , C/R=1, Ux
  1978.             LJMP    isdn_d2_ignor        ; 0Fx,0FF , C/R=1, Ux
  1979.  
  1980. isdn_d2_ignor:        RET
  1981.  
  1982.  
  1983. isdn_d2_get_d3:
  1984.         INC    dc_d2_nr
  1985.         INC    dc_d2_nr
  1986.  
  1987.         CALL    isdn_d3_reciv
  1988.  
  1989. isdn_d2_rr:
  1990.  
  1991.             MOV    DPS, #000h
  1992.             MOV    DPTR, #X_Dc_Trans_Buf
  1993.             MOV    A, #002h        ; SAPI
  1994.             MOVX    @DPTR, A
  1995.             INC    DPTR
  1996.             MOV    A, dc_d2_tei        ; TEI
  1997.             MOVX    @DPTR, A
  1998.             INC    DPTR
  1999.             MOV    A, #001h        ; RR
  2000.             MOVX    @DPTR, A
  2001.             INC    DPTR
  2002.             MOV    A, dc_d2_nr        ; N(R)
  2003.             ORL    A, #001h
  2004.             MOVX    @DPTR, A
  2005.  
  2006.             MOV    dc_trans_buf_l, #004h
  2007.  
  2008.             CALL    dc_send
  2009.  
  2010.             RET
  2011.  
  2012. isdn_d2_get_d3_u:
  2013.             MOV    DPS, #001h
  2014.             MOV    DPTR, #X_Dc_Reciv_Buf
  2015.             MOV    DPL1, #006h
  2016.             MOVX    A, @DPTR
  2017.             CJNE    A, #005h, isdn_d2_get_d3_u_1
  2018.  
  2019.             JB    dc_status.3, isdn_d2_get_d3_u_1
  2020.             JB    dc_status.4, isdn_d2_get_d3_u_1
  2021.             JB    dc_status.5, isdn_d2_get_d3_u_1
  2022.  
  2023.             MOV    DPL1, #005h
  2024.             MOVX    A, @DPTR
  2025.             ORL    A, #080h
  2026.             MOV    dc_d3_cr, A
  2027.  
  2028.             CALL    isdn_d3_reciv_b_nr
  2029.  
  2030.             SETB    dc_status.3
  2031.  
  2032.             CALL    dc_sabme
  2033.  
  2034.             MOV    A, #002h
  2035.             CALL    wait_period
  2036.  
  2037.             MOV    A, #001h
  2038.             CALL    dc_send_d3_byte
  2039.  
  2040. isdn_d2_get_d3_u_1:
  2041.             RET
  2042.  
  2043.  
  2044.  
  2045.  
  2046. isdn_d3_reciv:
  2047.             MOV    DPS, #000h
  2048.             MOV    DPTR, #X_Dc_Reciv_Buf
  2049.             MOV    DPL, #007h
  2050.             MOVX    A, @DPTR
  2051.  
  2052.             ANL    A, #07Fh
  2053.             MOV    B, #003h
  2054.             MUL    AB
  2055.             MOV    R0, A
  2056.             MOV    DPS, #000h
  2057.             MOV    DPTR, #isdn_d3_reciv_tab
  2058.             MOV    A, DPL
  2059.             ADD    A, R0
  2060.             MOV    DPL, A
  2061.             MOV    A, DPH
  2062.             ADDC    A, B
  2063.             MOV    DPH, A
  2064.             CLR    A
  2065.             JMP    @A+DPTR
  2066.  
  2067. isdn_d3_reciv_tab:    LJMP    isdn_d3_reciv_ignor    ; 00 Esccape Code
  2068.             LJMP    isdn_d3_reciv_ignor    ; 01 Alerting
  2069.             LJMP    isdn_d3_reciv_ignor    ; 02 Call Progress
  2070.             LJMP    isdn_d3_reciv_ignor    ; 03 Progress
  2071.             LJMP    isdn_d3_reciv_illegal    ; 04
  2072.             LJMP    isdn_d3_reciv_setup    ; 05 Setup
  2073.             LJMP    isdn_d3_reciv_illegal    ; 06
  2074.             LJMP    isdn_d3_reciv_ignor    ; 07 Connect
  2075.             LJMP    isdn_d3_reciv_illegal    ; 08
  2076.             LJMP    isdn_d3_reciv_illegal    ; 09
  2077.             LJMP    isdn_d3_reciv_illegal    ; 0A
  2078.             LJMP    isdn_d3_reciv_illegal    ; 0B
  2079.             LJMP    isdn_d3_reciv_illegal    ; 0C
  2080.             LJMP    isdn_d3_reciv_setup    ; 0D Setup Ack
  2081.             LJMP    isdn_d3_reciv_illegal    ; 0E
  2082.             LJMP    isdn_d3_reciv_ignor    ; 0F Connect Ack
  2083.             LJMP    isdn_d3_reciv_illegal    ; 10
  2084.             LJMP    isdn_d3_reciv_illegal    ; 11
  2085.             LJMP    isdn_d3_reciv_illegal    ; 12
  2086.             LJMP    isdn_d3_reciv_illegal    ; 13
  2087.             LJMP    isdn_d3_reciv_illegal    ; 14
  2088.             LJMP    isdn_d3_reciv_illegal    ; 15
  2089.             LJMP    isdn_d3_reciv_illegal    ; 16
  2090.             LJMP    isdn_d3_reciv_illegal    ; 17
  2091.             LJMP    isdn_d3_reciv_illegal    ; 18
  2092.             LJMP    isdn_d3_reciv_illegal    ; 19
  2093.             LJMP    isdn_d3_reciv_illegal    ; 1A
  2094.             LJMP    isdn_d3_reciv_illegal    ; 1B
  2095.             LJMP    isdn_d3_reciv_illegal    ; 1C
  2096.             LJMP    isdn_d3_reciv_illegal    ; 1D
  2097.             LJMP    isdn_d3_reciv_illegal    ; 1E
  2098.             LJMP    isdn_d3_reciv_illegal    ; 1F
  2099.             LJMP    isdn_d3_reciv_ignor    ; 20 User Info
  2100.             LJMP    isdn_d3_reciv_ignor    ; 21 Suspend Rej
  2101.             LJMP    isdn_d3_reciv_ignor    ; 22 Resume Rej
  2102.             LJMP    isdn_d3_reciv_illegal    ; 23
  2103.             LJMP    isdn_d3_reciv_ignor    ; 24 Hold 
  2104.             LJMP    isdn_d3_reciv_ignor    ; 25 Suspend
  2105.             LJMP    isdn_d3_reciv_ignor    ; 26 Resume
  2106.             LJMP    isdn_d3_reciv_illegal    ; 27
  2107.             LJMP    isdn_d3_reciv_ignor    ; 28 Hold Ack
  2108.             LJMP    isdn_d3_reciv_illegal    ; 29
  2109.             LJMP    isdn_d3_reciv_illegal    ; 2A
  2110.             LJMP    isdn_d3_reciv_illegal    ; 2B
  2111.             LJMP    isdn_d3_reciv_illegal    ; 2C
  2112.             LJMP    isdn_d3_reciv_ignor    ; 2D Suspend Ack
  2113.             LJMP    isdn_d3_reciv_ignor    ; 2E Resume Ack
  2114.             LJMP    isdn_d3_reciv_illegal    ; 2F
  2115.             LJMP    isdn_d3_reciv_ignor    ; 30 Hold Rej
  2116.             LJMP    isdn_d3_reciv_ignor    ; 31 Retrieve
  2117.             LJMP    isdn_d3_reciv_illegal    ; 32 
  2118.             LJMP    isdn_d3_reciv_ignor    ; 33 Retrieve Ack
  2119.             LJMP    isdn_d3_reciv_illegal    ; 34
  2120.             LJMP    isdn_d3_reciv_illegal    ; 35
  2121.             LJMP    isdn_d3_reciv_illegal    ; 36
  2122.             LJMP    isdn_d3_reciv_ignor    ; 37 Retrieve Rej
  2123.             LJMP    isdn_d3_reciv_illegal    ; 38
  2124.             LJMP    isdn_d3_reciv_illegal    ; 39
  2125.             LJMP    isdn_d3_reciv_illegal    ; 3A
  2126.             LJMP    isdn_d3_reciv_illegal    ; 3B
  2127.             LJMP    isdn_d3_reciv_illegal    ; 3C
  2128.             LJMP    isdn_d3_reciv_illegal    ; 3D
  2129.             LJMP    isdn_d3_reciv_illegal    ; 3E
  2130.             LJMP    isdn_d3_reciv_illegal    ; 3F
  2131.             LJMP    isdn_d3_reciv_illegal    ; 40
  2132.             LJMP    isdn_d3_reciv_illegal    ; 41
  2133.             LJMP    isdn_d3_reciv_illegal    ; 42
  2134.             LJMP    isdn_d3_reciv_illegal    ; 43
  2135.             LJMP    isdn_d3_reciv_illegal    ; 44
  2136.             LJMP    isdn_d3_reciv_ignor    ; 45 Disconnect
  2137.             LJMP    isdn_d3_reciv_ignor    ; 46 Restart
  2138.             LJMP    isdn_d3_reciv_illegal    ; 47
  2139.             LJMP    isdn_d3_reciv_illegal    ; 48
  2140.             LJMP    isdn_d3_reciv_illegal    ; 49
  2141.             LJMP    isdn_d3_reciv_illegal    ; 4A
  2142.             LJMP    isdn_d3_reciv_illegal    ; 4B
  2143.             LJMP    isdn_d3_reciv_illegal    ; 4C
  2144.             LJMP    isdn_d3_reciv_release    ; 4D Release
  2145.             LJMP    isdn_d3_reciv_ignor    ; 4E Restart Ack
  2146.             LJMP    isdn_d3_reciv_illegal    ; 4F
  2147.             LJMP    isdn_d3_reciv_illegal    ; 50
  2148.             LJMP    isdn_d3_reciv_illegal    ; 51
  2149.             LJMP    isdn_d3_reciv_illegal    ; 52
  2150.             LJMP    isdn_d3_reciv_illegal    ; 53
  2151.             LJMP    isdn_d3_reciv_illegal    ; 54
  2152.             LJMP    isdn_d3_reciv_illegal    ; 55
  2153.             LJMP    isdn_d3_reciv_illegal    ; 56
  2154.             LJMP    isdn_d3_reciv_illegal    ; 57
  2155.             LJMP    isdn_d3_reciv_illegal    ; 58
  2156.             LJMP    isdn_d3_reciv_illegal    ; 59
  2157.             LJMP    isdn_d3_reciv_release    ; 5A Release Compl
  2158.             LJMP    isdn_d3_reciv_illegal    ; 5B
  2159.             LJMP    isdn_d3_reciv_illegal    ; 5C
  2160.             LJMP    isdn_d3_reciv_illegal    ; 5D
  2161.             LJMP    isdn_d3_reciv_illegal    ; 5E
  2162.             LJMP    isdn_d3_reciv_illegal    ; 5F
  2163.             LJMP    isdn_d3_reciv_ignor    ; 60 Segment
  2164.             LJMP    isdn_d3_reciv_illegal    ; 61
  2165.             LJMP    isdn_d3_reciv_ignor    ; 62 Facility
  2166.             LJMP    isdn_d3_reciv_illegal    ; 63
  2167.             LJMP    isdn_d3_reciv_ignor    ; 64 Register
  2168.             LJMP    isdn_d3_reciv_illegal    ; 65
  2169.             LJMP    isdn_d3_reciv_illegal    ; 66
  2170.             LJMP    isdn_d3_reciv_illegal    ; 67
  2171.             LJMP    isdn_d3_reciv_illegal    ; 68
  2172.             LJMP    isdn_d3_reciv_illegal    ; 69
  2173.             LJMP    isdn_d3_reciv_illegal    ; 6A
  2174.             LJMP    isdn_d3_reciv_illegal    ; 6B
  2175.             LJMP    isdn_d3_reciv_illegal    ; 6C
  2176.             LJMP    isdn_d3_reciv_illegal    ; 6D
  2177.             LJMP    isdn_d3_reciv_ignor    ; 6E Notify
  2178.             LJMP    isdn_d3_reciv_illegal    ; 6F
  2179.             LJMP    isdn_d3_reciv_illegal    ; 70
  2180.             LJMP    isdn_d3_reciv_illegal    ; 71
  2181.             LJMP    isdn_d3_reciv_illegal    ; 72
  2182.             LJMP    isdn_d3_reciv_illegal    ; 73
  2183.             LJMP    isdn_d3_reciv_illegal    ; 74
  2184.             LJMP    isdn_d3_reciv_ignor    ; 75 Status Enquiry
  2185.             LJMP    isdn_d3_reciv_illegal    ; 76
  2186.             LJMP    isdn_d3_reciv_illegal    ; 77
  2187.             LJMP    isdn_d3_reciv_illegal    ; 78
  2188.             LJMP    isdn_d3_reciv_ignor    ; 79 Congestion Control
  2189.             LJMP    isdn_d3_reciv_illegal    ; 7A
  2190.             LJMP    isdn_d3_reciv_ignor    ; 7B Information
  2191.             LJMP    isdn_d3_reciv_illegal    ; 7C
  2192.             LJMP    isdn_d3_reciv_ignor    ; 7D Status
  2193.             LJMP    isdn_d3_reciv_illegal    ; 7E
  2194.             LJMP    isdn_d3_reciv_illegal    ; 7F
  2195.  
  2196.  
  2197. isdn_d3_reciv_illegal:    RET
  2198. isdn_d3_reciv_ignor:    RET
  2199.  
  2200.  
  2201.  
  2202. isdn_d3_reciv_release:
  2203.         CLR    dc_status.3
  2204.         CLR    dc_status.4
  2205.         CLR    dc_status.5
  2206.         MOV    dc_d3_cr, #001h
  2207.  
  2208.         CALL    dsc_b_off
  2209.  
  2210.     CALL    lcd_rd_ctrl
  2211.     MOV    R2, A
  2212.     MOV    A, #0A0h
  2213.     CALL    lcd_wr_ctrl
  2214.  
  2215.     MOV    A, #'_'
  2216.     CALL    lcd_wr_data
  2217.  
  2218.     MOV    A, R2
  2219.     ORL    A, #080h
  2220.     CALL    lcd_wr_ctrl
  2221.  
  2222.             RET
  2223.  
  2224.  
  2225. isdn_d3_reciv_setup:
  2226.         CALL    isdn_d3_reciv_b_nr
  2227.             RET
  2228.  
  2229.  
  2230.  
  2231. isdn_d3_reciv_b_nr:    MOV    DPS, #000h
  2232.             MOV    DPTR, #X_Dc_Reciv_Buf
  2233.             MOV    DPL, #002h
  2234.             MOVX    A, @DPTR
  2235.             ANL    A, #0EFh
  2236.             CJNE    A, #003h, isdn_d3_reciv_b_nr_1
  2237.             MOV    DPL, #006h
  2238.             SJMP    isdn_d3_reciv_b_nr_2
  2239. isdn_d3_reciv_b_nr_1:    JB    ACC.0, isdn_d3_reciv_b_nr_end
  2240.             MOV    DPL, #007h
  2241. isdn_d3_reciv_b_nr_2:    MOVX    A, @DPTR
  2242.             ANL    A, #0F7h
  2243.             CJNE    A, #005h, isdn_d3_reciv_b_nr_end
  2244.  
  2245. isdn_d3_reciv_b_nr_3:    INC    DPTR
  2246.             MOV    A, dc_reciv_buf_l
  2247.             CLR    C
  2248.             SUBB    A, DPL
  2249.             JC    isdn_d3_reciv_b_nr_end
  2250.  
  2251.             MOVX    A, @DPTR
  2252.             JB    ACC.7, isdn_d3_reciv_b_nr_3
  2253.             INC    DPTR
  2254.             CJNE    A, #018h, isdn_d3_reciv_b_nr_4
  2255.             SJMP    isdn_d3_reciv_b_nr_ok
  2256. isdn_d3_reciv_b_nr_4:    MOVX    A, @DPTR
  2257.             MOV    B, A
  2258.             MOV    A, DPL
  2259.             ADD    A, B
  2260.             MOV    DPL, A
  2261.             SJMP    isdn_d3_reciv_b_nr_3
  2262.  
  2263. isdn_d3_reciv_b_nr_end:    MOV    A, #000h
  2264.             RET
  2265.  
  2266. isdn_d3_reciv_b_nr_ok:    INC    DPTR
  2267.             MOVX    A, @DPTR
  2268.             MOV    dc_bc_nr, A
  2269.         MOV    B, A
  2270.  
  2271.         CALL    lcd_rd_ctrl
  2272.         MOV    R2, A
  2273.         MOV    A, #0A0h
  2274.         CALL    lcd_wr_ctrl
  2275.  
  2276.         MOV    A, B
  2277.         ANL    A, #003h
  2278.         ORL    A, #030h
  2279.         CALL    lcd_wr_data
  2280.  
  2281.         MOV    A, R2
  2282.         ORL    A, #080h
  2283.         CALL    lcd_wr_ctrl
  2284.  
  2285.  
  2286.         MOV    A, B
  2287.  
  2288.             JB    ACC.0, isdn_d3_reciv_b_nr_ok1
  2289.             CALL    dsc_t_b2_plain
  2290.         MOV    A, B
  2291.             RET
  2292.  
  2293. isdn_d3_reciv_b_nr_ok1:    CALL    dsc_t_b1_plain
  2294.         MOV    A, B
  2295.             RET
  2296.  
  2297.  
  2298.  
  2299. ; -----------------------------------------------------------------------------
  2300.  
  2301. wait_period:        ANL    A, #01Fh
  2302.             ADD    A, period_timer
  2303.  
  2304.             CJNE    A, period_timer, $
  2305.  
  2306.             RET
  2307.  
  2308. ; -----------------------------------------------------------------------------
  2309. ; -----------------------------------------------------------------------------
  2310.  
  2311. irq_add_kyb_buffer:    MOV    R2, A
  2312.             MOV    A, kyb_data_p_irq
  2313.             MOV    R0, A
  2314.             INC    A
  2315.             ANL    A, #007h
  2316.             MOV    kyb_data_p_irq, A
  2317.             MOV    A, R0
  2318.             ADD    A, #kyb_data_buffer
  2319.             MOV    R0, A
  2320.             MOV    A, R2
  2321.             MOV    @R0, A
  2322.             RET
  2323.  
  2324. ; -----------------------------------------------------------------------------
  2325.  
  2326. irq_period:        PUSH    PSW
  2327.             PUSH    ACC
  2328.             PUSH    DPL
  2329.             PUSH    DPH
  2330.             PUSH    DPL1
  2331.             PUSH    DPH1
  2332.             PUSH    DPS
  2333.  
  2334.             SETB    RS0
  2335.  
  2336.             MOV    A, WDCON
  2337.             ANL    A, #0F4h
  2338.             ORL    A, #001h
  2339.             MOV    TA, #0AAh
  2340.             MOV    TA, #055h
  2341.             MOV    WDCON, A
  2342.  
  2343.             INC    period_timer
  2344.             MOV    A, period_timer
  2345.             ANL    A, #007h
  2346.             JNZ    irq_period_1
  2347.  
  2348.             MOV    A, #'p'
  2349.             CALL    irq_add_kyb_buffer
  2350.             SJMP    irq_period_end
  2351.  
  2352. irq_period_1:        MOV    DPS, #000h
  2353.             MOV    DPTR, #X_RTC_Min
  2354.             MOVX    A, @DPTR
  2355.             CJNE    A, period_min, irq_period_2
  2356.             SJMP    irq_period_end
  2357.  
  2358. irq_period_2:        MOV    period_min, A
  2359.             MOV    A, #'u'
  2360.             CALL    irq_add_kyb_buffer
  2361.  
  2362. irq_period_end:        POP    DPS
  2363.             POP    DPH1
  2364.             POP    DPL1
  2365.             POP    DPH
  2366.             POP    DPL
  2367.             POP    ACC
  2368.             POP    PSW
  2369.             RETI
  2370.  
  2371. ; -----------------------------------------------------------------------------
  2372.  
  2373. irq_kyb:        PUSH    PSW
  2374.             PUSH    ACC
  2375.             PUSH    DPL
  2376.             PUSH    DPH
  2377.             PUSH    DPS
  2378.  
  2379.             SETB    RS0
  2380.  
  2381.             MOV    DPS, #000h
  2382.             MOV    DPTR, #X_KYB
  2383.             MOVX    A, @DPTR
  2384.             ANL    A, #01Fh
  2385.             MOV    DPTR, #irq_kyb_tab
  2386.             MOVC    A, @A+DPTR
  2387.             CALL    irq_add_kyb_buffer
  2388.  
  2389.             POP    DPS
  2390.             POP    DPH
  2391.             POP    DPL
  2392.             POP    ACC
  2393.             POP    PSW
  2394.             RETI
  2395.  
  2396. irq_kyb_tab:        DB    'D'    ; 00
  2397.             DB    '6'    ; 01
  2398.             DB    '4'    ; 02
  2399.             DB    ' '    ; 03
  2400.             DB    'C'    ; 04
  2401.             DB    ' '    ; 05
  2402.             DB    '5'    ; 06
  2403.             DB    ' '    ; 07
  2404.             DB    'F'    ; 08
  2405.             DB    '9'    ; 09
  2406.             DB    '7'    ; 0A
  2407.             DB    ' '    ; 0B
  2408.             DB    'E'    ; 0C
  2409.             DB    ' '    ; 0D
  2410.             DB    '8'    ; 0E
  2411.             DB    ' '    ; 0F
  2412.             DB    'H'    ; 10
  2413.             DB    '#'    ; 11
  2414.             DB    '*'    ; 12
  2415.             DB    ' '    ; 13
  2416.             DB    'G'    ; 14
  2417.             DB    ' '    ; 15
  2418.             DB    '0'    ; 16
  2419.             DB    ' '    ; 17
  2420.             DB    'B'    ; 18
  2421.             DB    '3'    ; 19
  2422.             DB    '1'    ; 1A
  2423.             DB    ' '    ; 1B
  2424.             DB    'A'    ; 1C
  2425.             DB    ' '    ; 1D
  2426.             DB    '2'    ; 1E
  2427.             DB    ' '    ; 1F
  2428.  
  2429. ; -----------------------------------------------------------------------------
  2430.  
  2431. irq_isdn:        PUSH    PSW
  2432.             PUSH    ACC
  2433.             PUSH    DPL
  2434.             PUSH    DPH
  2435.             PUSH    DPL1
  2436.             PUSH    DPH1
  2437.             PUSH    DPS
  2438.  
  2439.             SETB    RS0
  2440.  
  2441.             MOV    P2, #0E0h
  2442.             MOV    R0, #R_DSC_CrIr
  2443.             MOV    R1, #R_DSC_Data
  2444.             MOV    DPS, #000h
  2445.             MOVX    A, @R0
  2446.             MOV    dc_ir, A
  2447.             MOV    DPTR, #X_DSC_dsr1
  2448.             MOVX    A, @DPTR
  2449.             MOV    dc_dsr1, A
  2450.             MOV    DPTR, #X_DSC_dsr2
  2451.             MOVX    A, @DPTR
  2452.             MOV    dc_dsr2, A
  2453.             MOV    DPTR, #X_DSC_der
  2454.             MOVX    A, @DPTR
  2455.             MOV    dc_der, A
  2456.             MOV    A, #DSCi_lsr
  2457.             MOVX    @R0, A
  2458.             MOVX    A, @R1
  2459.             MOV    dc_lsr, A
  2460.  
  2461.             JNB    dc_ir.0, irq_isdn_1
  2462.             LCALL    irq_isdn_dc_trans
  2463. irq_isdn_1:        JNB    dc_ir.1, irq_isdn_2
  2464.             LCALL    irq_isdn_dc_reciv
  2465. irq_isdn_2:        JNB    dc_ir.2, irq_isdn_3
  2466.             LCALL    irq_isdn_dc_stat
  2467. irq_isdn_3:    ;    JNB    dc_ir.3, irq_isdn_4
  2468.         ;    LCALL    irq_isdn_dc_err
  2469. irq_isdn_4:    ;    JNB    dc_ir.4, irq_isdn_5
  2470.         ;    LCALL    irq_isdn_bc
  2471. irq_isdn_5:        JNB    dc_ir.5, irq_isdn_6
  2472.             LCALL    irq_isdn_lui
  2473. irq_isdn_6:    ;    JNB    dc_ir.6, irq_isdn_7
  2474.         ;    LCALL    irq_isdn_dc_buf
  2475. irq_isdn_7:    ;    JNB    dc_ir.7, irq_isdn_8
  2476.         ;    LCALL    irq_isdn_mfsb
  2477. irq_isdn_8:
  2478.             POP    DPS
  2479.             POP    DPH1
  2480.             POP    DPL1
  2481.             POP    DPH
  2482.             POP    DPL
  2483.             POP    ACC
  2484.             POP    PSW
  2485.             RETI
  2486.  
  2487. ; -----------------------------------------------------------------------------
  2488.  
  2489. irq_isdn_dc_stat:    JNB    dc_dsr1.0, irq_isdn_dc_stat_1
  2490.             LCALL    irq_isdn_dc_stat_addr
  2491. irq_isdn_dc_stat_1:    JNB    dc_dsr1.1, irq_isdn_dc_stat_2
  2492.             LCALL    irq_isdn_dc_reciv_cl
  2493. irq_isdn_dc_stat_2:    JNB    dc_dsr1.6, irq_isdn_dc_stat_3
  2494.             LCALL    irq_isdn_dc_trans_cl
  2495. irq_isdn_dc_stat_3:    RET
  2496.  
  2497.  
  2498. irq_isdn_dc_err:    JNB    dc_der.0, irq_isdn_dc_err_1
  2499.             LCALL    irq_isdn_dc_err_abort
  2500. irq_isdn_dc_err_1:    JNB    dc_der.1, irq_isdn_dc_err_2
  2501.             LCALL    irq_isdn_dc_err_bit
  2502. irq_isdn_dc_err_2:    JNB    dc_der.2, irq_isdn_dc_err_3
  2503.             LCALL    irq_isdn_dc_err_coll
  2504. irq_isdn_dc_err_3:    JNB    dc_der.3, irq_isdn_dc_err_4
  2505.             LCALL    irq_isdn_dc_err_fcs
  2506. irq_isdn_dc_err_4:    JNB    dc_der.4, irq_isdn_dc_err_5
  2507.             LCALL    irq_isdn_dc_err_ovfl
  2508. irq_isdn_dc_err_5:    JNB    dc_der.5, irq_isdn_dc_err_6
  2509.             LCALL    irq_isdn_dc_err_unfl
  2510. irq_isdn_dc_err_6:    JNB    dc_der.6, irq_isdn_dc_err_7
  2511.             LCALL    irq_isdn_dc_err_ovru
  2512. irq_isdn_dc_err_7:    JNB    dc_der.7, irq_isdn_dc_err_8
  2513.             LCALL    irq_isdn_dc_err_unru
  2514. irq_isdn_dc_err_8:    JNB    dc_dsr2.2, irq_isdn_dc_err_9
  2515.             LCALL    irq_isdn_dc_err_lost
  2516. irq_isdn_dc_err_9:    RET
  2517.  
  2518.  
  2519. irq_isdn_lui:        JNB    dc_lsr.3, irq_isdn_lui_1
  2520.             LCALL    irq_isdn_lui_f3
  2521. irq_isdn_lui_1:        JNB    dc_lsr.4, irq_isdn_lui_2
  2522.             LCALL    irq_isdn_lui_f7
  2523. irq_isdn_lui_2:        JNB    dc_lsr.5, irq_isdn_lui_3
  2524.             LCALL    irq_isdn_lui_f8
  2525. irq_isdn_lui_3:        JNB    dc_lsr.7, irq_isdn_lui_4
  2526.             LCALL    irq_isdn_hsw
  2527. irq_isdn_lui_4:        RET
  2528.  
  2529.  
  2530. irq_isdn_dc_buf:    JNB    dc_dsr2.0, irq_isdn_dc_buf_1
  2531.             LCALL    irq_isdn_dc_lbr
  2532. irq_isdn_dc_buf_1:    JNB    dc_dsr2.0, irq_isdn_dc_buf_2
  2533.             LCALL    irq_isdn_dc_r_buf
  2534. irq_isdn_dc_buf_2:    JNB    dc_dsr2.0, irq_isdn_dc_buf_3
  2535.             LCALL    irq_isdn_dc_lbt
  2536. irq_isdn_dc_buf_3:    JNB    dc_dsr2.0, irq_isdn_dc_buf_4
  2537.             LCALL    irq_isdn_dc_t_buf
  2538. irq_isdn_dc_buf_4:    JNB    dc_dsr2.0, irq_isdn_dc_buf_5
  2539.             LCALL    irq_isdn_dc_sec
  2540. irq_isdn_dc_buf_5:    RET
  2541.  
  2542.  
  2543. irq_isdn_mfsb:        RET
  2544.  
  2545. ; -----------------------------------------------------------------------------
  2546.  
  2547. irq_isdn_dc_trans:
  2548.             MOV    DPS, #000h
  2549.             MOV    DPTR, #X_DSC_DCB
  2550.             INC    DPS
  2551.             MOV    DPTR, #X_Dc_Trans_buf
  2552.             MOV    DPL1, dc_trans_buf_p
  2553.             MOV    A, dc_trans_buf_l
  2554.             CLR    C
  2555.             SUBB    A, DPL1
  2556.             JZ    irq_isdn_dc_trans_3
  2557.             JC    irq_isdn_dc_trans_3
  2558.             MOV    R6, A
  2559.             CLR    C
  2560.             SUBB    A, #008h
  2561.             JC    irq_isdn_dc_trans_2
  2562.             MOV    R7, #008h
  2563.             SJMP    irq_isdn_dc_trans_1
  2564. irq_isdn_dc_trans_2:    MOV    A, R6
  2565.             MOV    R7, A
  2566. irq_isdn_dc_trans_1:    MOVX    A, @DPTR
  2567.             INC    DPTR
  2568.             INC    DPS
  2569.             MOVX    @DPTR, A
  2570.             INC    DPS
  2571.             DJNZ    R7, irq_isdn_dc_trans_1
  2572.  
  2573.             MOV    A, DPL1
  2574.             MOV    dc_trans_buf_p, A
  2575.  
  2576.     ;    MOV    A, #'d'
  2577.     ;    CALL    irq_add_kyb_buffer
  2578.             RET
  2579.  
  2580. irq_isdn_dc_trans_3:
  2581.     ;    MOV    A, #'e'
  2582.     ;    CALL    irq_add_kyb_buffer
  2583.  
  2584.             RET
  2585.  
  2586.  
  2587.  
  2588. irq_isdn_dc_reciv:    MOV    DPS, #000h
  2589.             MOV    DPTR, #X_Dc_Reciv_buf
  2590.             MOV    DPL, dc_reciv_buf_p
  2591.             INC    DPS
  2592.             MOV    DPTR, #X_DSC_DCB
  2593.             MOV    R7, #010h
  2594. irq_isdn_dc_reciv_1:    MOVX    A, @DPTR
  2595.             INC    DPS
  2596.             MOVX    @DPTR, A
  2597.             INC    DPTR
  2598.             INC    DPS
  2599.             DJNZ    R7, irq_isdn_dc_reciv_1
  2600.  
  2601.             MOV    A, DPL
  2602.             MOV    dc_reciv_buf_p, A
  2603.  
  2604.     ;    MOV    A, #'s'
  2605.     ;    CALL    irq_add_kyb_buffer
  2606.  
  2607.             RET
  2608.  
  2609.  
  2610.  
  2611. irq_isdn_dc_stat_addr:    RET
  2612.  
  2613.  
  2614. irq_isdn_dc_reciv_cl:
  2615.             MOV    A, #DSCi_drcr
  2616.             MOVX    @R0, A
  2617.             MOVX    A, @R1
  2618.             MOV    R2, A
  2619.             MOVX    A, @R1
  2620.  
  2621.             MOV    A, R2
  2622.         CLR    C
  2623.         SUBB    A, dc_reciv_buf_p
  2624.         MOV    R2, A
  2625.         ;    MOV    dc_reciv_buf_l, A
  2626.  
  2627.             MOV    DPS, #000h
  2628.             MOV    DPTR, #X_Dc_Reciv_buf
  2629.             MOV    DPL, dc_reciv_buf_p
  2630.             INC    DPS
  2631.             MOV    DPTR, #X_DSC_DCB
  2632.             MOV    A, R2
  2633.             MOV    R7, A
  2634. irq_isdn_dc_reciv_cl_1:    MOVX    A, @DPTR
  2635.             INC    DPS
  2636.             MOVX    @DPTR, A
  2637.             INC    DPTR
  2638.             INC    DPS
  2639.             DJNZ    R7, irq_isdn_dc_reciv_cl_1
  2640.  
  2641.         INC    DPS
  2642.         MOV    A, DPL
  2643.         MOV    dc_reciv_buf_l, A
  2644.  
  2645.  
  2646.             MOV    dc_reciv_buf_p, #000h
  2647.  
  2648.             MOV    A, dc_der
  2649.             JNZ    irq_isdn_dc_reciv_cl_2
  2650.  
  2651.             MOV    A, #'r'
  2652.             CALL    irq_add_kyb_buffer
  2653.  
  2654. irq_isdn_dc_reciv_cl_2:    RET
  2655.  
  2656.  
  2657. irq_isdn_dc_trans_cl:
  2658.     ;    MOV    A, #'c'
  2659.     ;    CALL    irq_add_kyb_buffer
  2660.  
  2661.             RET
  2662.  
  2663.  
  2664. irq_isdn_dc_err_abort:    RET
  2665.  
  2666. irq_isdn_dc_err_bit:    RET
  2667.  
  2668. irq_isdn_dc_err_coll:    RET
  2669.  
  2670. irq_isdn_dc_err_fcs:    RET
  2671.  
  2672. irq_isdn_dc_err_ovfl:    RET
  2673.  
  2674. irq_isdn_dc_err_unfl:    RET
  2675.  
  2676. irq_isdn_dc_err_ovru:    RET
  2677.  
  2678. irq_isdn_dc_err_unru:    RET
  2679.  
  2680. irq_isdn_dc_err_lost:    RET
  2681.  
  2682. irq_isdn_bc:        RET
  2683.  
  2684. irq_isdn_lui_f3:    RET
  2685.  
  2686. irq_isdn_lui_f7:    RET
  2687.  
  2688. irq_isdn_lui_f8:    RET
  2689.  
  2690.  
  2691. irq_isdn_hsw:        MOV    A, #'o'
  2692.             JB    dc_lsr.6, irq_isdn_hsw_1
  2693.             MOV    A, #'i'
  2694. irq_isdn_hsw_1:        CALL    irq_add_kyb_buffer
  2695.             RET
  2696.  
  2697.  
  2698. irq_isdn_dc_lbr:    RET
  2699.  
  2700. irq_isdn_dc_r_buf:    RET
  2701.  
  2702. irq_isdn_dc_lbt:    RET
  2703.  
  2704. irq_isdn_dc_t_buf:    RET
  2705.  
  2706. irq_isdn_dc_sec:    RET
  2707.  
  2708. ; -----------------------------------------------------------------------------
  2709. ; -----------------------------------------------------------------------------
  2710.  
  2711. dat_d3_setup_a:        DB    00Ah    ; lenght
  2712.             DB    005h, 004h, 003h, 080h, 090h, 0A3h, 07Dh, 002h
  2713.             DB    091h, 081h
  2714.  
  2715. dat_d3_setup_d:        DB    002h    ; length
  2716.             DB    005h, 0
  2717.  
  2718. dat_d3_dail1:        DB    005h
  2719.             DB    07Bh, 070h, 002h, 081h
  2720.                 ; und eine Ziffer
  2721.  
  2722. dat_d3_discon:        DB    005h
  2723.             DB    045h, 008h, 002h, 080h, 090h
  2724.  
  2725. ; -----------------------------------------------------------------------------
  2726. ; -----------------------------------------------------------------------------
  2727.  
  2728. txt_stack_error:    DB    'Stack Error !',0
  2729.  
  2730. mnu_:            DB    '    '
  2731.             DW    m_nop
  2732.  
  2733. mnu_bksp:        DB    ' <- '
  2734.             DW    m_bksp
  2735.  
  2736. txt_main_menu:        DB    'Main Menu ',0
  2737.  
  2738. mnu_main:        DB    'Main'
  2739.             DW    m_menu_main
  2740.  
  2741. txt_crypt_menu:        DB    'Crypt Menu',0
  2742.  
  2743. mnu_crypt:        DB    'Cryp'
  2744.             DW    m_menu_crypt
  2745.  
  2746. txt_setup_menu:        DB    'Setup Menu',0
  2747.  
  2748. mnu_setup:        DB    'Setu'
  2749.             DW    m_menu_setup
  2750.  
  2751. txt_mon_menu:        DB    'B-Mon Menu',0
  2752.  
  2753. mnu_mon:        DB    'Mon '
  2754.             DW    m_menu_mon
  2755.  
  2756. txt_dc_menu:        DB    'D-Chn Menu',0
  2757.  
  2758. mnu_dc:            DB    'D-Ch'
  2759.             DW    m_menu_dc
  2760.  
  2761. txt_rtc_menu:        DB    'RTC Menu  ',0
  2762.  
  2763. mnu_rtc:        DB    'RTC '
  2764.             DW    m_menu_rtc
  2765.  
  2766.  
  2767.  
  2768.  
  2769. mnu_dsci:        DB    'DSCi'
  2770.             DW    m_dsci
  2771.  
  2772.  
  2773. mnu_mon_off:        DB    'off '
  2774.             DW    m_mon_off
  2775.  
  2776. mnu_mon_b1:        DB    'M-B1'
  2777.             DW    m_mon_b1
  2778.  
  2779. mnu_mon_b2:        DB    'M-B2'
  2780.             DW    m_mon_b2
  2781.  
  2782. mnu_mon_t_b1:        DB    'T-B1'
  2783.             DW    m_mon_t_b1
  2784.  
  2785. mnu_mon_t_b2:        DB    'T-B2'
  2786.             DW    m_mon_t_b2
  2787.  
  2788. mnu_c_mon_b1:        DB    'M-B1'
  2789.             DW    m_c_mon_b1
  2790.  
  2791. mnu_c_mon_b2:        DB    'M-B2'
  2792.             DW    m_c_mon_b2
  2793.  
  2794. mnu_c_mon_t_b1:        DB    'T-B1'
  2795.             DW    m_c_mon_t_b1
  2796.  
  2797. mnu_c_mon_t_b2:        DB    'T-B2'
  2798.             DW    m_c_mon_t_b2
  2799.  
  2800.  
  2801. mnu_1khz:        DB    '1kHz'
  2802.             DW    m_1khz
  2803.  
  2804. mnu_sabme:        DB    'sabm'
  2805.             DW    m_sabme
  2806.  
  2807. mnu_s0ac:        DB    'S0ac'
  2808.             DW    m_s0ac
  2809.  
  2810. mnu_lsr:        DB    'lsr '
  2811.             DW    m_lsr
  2812.  
  2813. mnu_dsr:        DB    'dsr '
  2814.             DW    m_dsr
  2815.  
  2816.  
  2817. mnu_set_tei        DB    'TEI '
  2818.             DW    m_set_tei
  2819.  
  2820.  
  2821. mnu_rtc_time:        DB    'Time'
  2822.             DW    m_rtc_time
  2823.  
  2824. mnu_rtc_date:        DB    'Date'
  2825.             DW    m_rtc_date
  2826.  
  2827. mnu_rtc_cal:        DB    'Cal '
  2828.             DW    m_rtc_cal
  2829.  
  2830. mnu_rtc_stop:        DB    'Stop'
  2831.             DW    m_rtc_stop
  2832.  
  2833. mnu_rtc_go:        DB    'Go  '
  2834.             DW    m_rtc_go
  2835.  
  2836.  
  2837.  
  2838.  
  2839. txt_hex_menu:        DB    'Hex Menu  ',0
  2840.  
  2841. mnu_hex:        DB    'Hex '
  2842.             DW    m_hex_menu
  2843.  
  2844. mnu_hex_a:        DB    ' A  '
  2845.             DW    m_hex_a
  2846.  
  2847. mnu_hex_b:        DB    ' B  '
  2848.             DW    m_hex_b
  2849.  
  2850. mnu_hex_c:        DB    ' C  '
  2851.             DW    m_hex_c
  2852.  
  2853. mnu_hex_d:        DB    ' D  '
  2854.             DW    m_hex_d
  2855.  
  2856. mnu_hex_e:        DB    ' E  '
  2857.             DW    m_hex_e
  2858.  
  2859. mnu_hex_f:        DB    ' F  '
  2860.             DW    m_hex_f
  2861.  
  2862. mnu_hex_back:        DB    'back'
  2863.             DW    m_hex_back
  2864.  
  2865. ; -----------------------------------------------------------------------------
  2866.  
  2867. END
  2868.